http://acm.tju.edu.cn/toj/showp1127.html
这道题比较简单,统计字符串中的每一个字母“大于”后面字母的个数之和,然后按照从小到大的顺序输出。代码想清楚之后反复提交总是WA,后来抱着试一试的态度把存放字符串的数组改成了200*200(原来是100*50),竟然AC了……看来是数组范围不够的原因。以后做题时一定要注意。
代码:
#include
#include
char matrix[200][200];
char result[200][200];
int main(){
int m, n, p;
int order[100];
for(int i = 0; i < 100; i++)
order[i] = 0;
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i++){
scanf("%s", matrix[i]);
for(int j = 0; j < n; j++){
for(int k = j+1; k < n; k++){
if(matrix[i][j]-matrix[i][k] > 0)
order[i]++;
}
}
}
/*
for(int i = 0; i < m; i++){
printf("%d ", order[i]);
}
printf("\n");
*/
int min;
for(int i = 0; i < m; i++){
min = 100000;
for(int j = 0; j < m; j++){
if(min > order[j] && order[j]!=-1){
min = order[j];
p = j;
}
}
order[p] = -1;
for(int k = 0; k < n; k++){
result[i][k] = matrix[p][k];
}
}
for(int i = 0; i < m; i++){
printf("%s\n", result[i]);
}
return 0;
}
/*
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
*/