POJ 1007 DNA Sorting――Output Limit Exceeded

2014-11-24 01:21:35 · 作者: · 浏览: 3
这题本就是一道水题,但是让我弄出了 Output Limit Exceeded,起先没注意以为是自己的运行超时了,后来在优化下排序,发现不是如此。
最后才发现是,原来是最大数组长度是50,而且是字符串,而我真的设置了最大是50,造成最后字符数组尾部没有‘\0’,在输出的时候出问题了。
示例一:
#include   
  
#define LENGTH 3  
  
int main(void)  
{  
    char a[3][LENGTH];  
    printf("输入:\n");  
    scanf("%s",a[0]);  
    scanf("%s",a[1]);  
    scanf("%s",a[2]);  
    printf("输出:\n");  
    printf("a[0]:%s\n",a[0]);  
    printf("a[1]:%s\n",a[1]);  
    printf("a[2]:%s\n",a[2]);  
    getchar();  
    getchar();  
    return 0;  
}  

输出为:
示例二: 数组最后留出一个多余的 将length设置为4
#include   
  
#define LENGTH 4  
  
int main(void)  
{  
    char a[3][LENGTH];  
    printf("输入:\n");  
    scanf("%s",a[0]);  
    scanf("%s",a[1]);  
    scanf("%s",a[2]);  
    printf("输出:\n");  
    printf("a[0]:%s\n",a[0]);  
    printf("a[1]:%s\n",a[1]);  
    printf("a[2]:%s\n",a[2]);  
    getchar();  
    getchar();  
    return 0;  
}  

输出为:
最后附上这道题目的代码:
#include    
#include   
  
#define LENGTH 51 //开辟的数组的问题  
#define N 100 //代表个数 与下面的m的意义相同  
  
  
  
int comp ( const void *a, const void *b )  
{  
    return ( ( int * ) a ) [1] - ( ( int * ) b ) [1];  
}  
  
  
int main()  
{  
    int n,m; //n代表长度 m代表行数  
    char arr[N][LENGTH];  
    int arrNum[N][2];  
      
    while (scanf("%d %d",&n,&m) != EOF)  
    {  
        int i,j,k,sum,tmp1,tmp2;  
          
        if(n<=0 || n>50 || m<=0 ||m>100)  
            break;  
        for( i=0; i arr[i][k])  
                        sum++;  
                }  
            arrNum[i][1] = sum;  
        }  
  
        //qsort ( arrNum, i, sizeof ( int ) * 2, comp);  
        for ( i=0; i arrNum[j][1])  
                {  
                    tmp1 = arrNum[j][0];   
                    tmp2 = arrNum[j][1];   
                    arrNum[j][0] = arrNum[i][0];  
                    arrNum[j][1] = arrNum[i][1];  
                    arrNum[i][0] = tmp1;  
                    arrNum[i][1] = tmp2;  
                }  
            }  
            for ( i=0; i