POJ 1007 DNA Sorting 为什么我的代码在自己电脑上运行时对的,但提交上去就写的wrong answer呢?

#include<stdio.h>#include<stdlib.h>#include<string.h>/*计算混乱度函数*/intsortness(char*DNA,... #include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*计算混乱度函数*/
int sortness(char * DNA , int length )
{
int m = 1 , n = 1 ;
int sort = 0 ;
for(m=1 ; m<=length ; m++)
for(n=m ; n<=length ; n++)
{
if(DNA[m] > DNA[n])
sort++ ;
}
return sort ;
}
/*交换两个字符串函数*/
void strChange(char * first , char * second)
{
char temp[100]={0} ;
strcpy (temp , first) ;
strcpy (first , second) ;
strcpy (second , temp) ;
}
/*主函数*/
void main()
{
int sortness(char * , int ) ;
int strLength = 0 , strNumber = 0 ;
int i=0 , k=1 ,t=0 , sort=0;
int x = 0 , y = 0 ;
char DNA[102][52] = {0};
/*进行二维数组的输入*/
scanf("%d %d" , &strLength , &strNumber) ;
getchar() ; //注意!!
for(i=0 ; i<strNumber ; i++)
{
for(k=1 ; k<=strLength ; k++)
scanf("%c" , &DNA[i][k]) ;
getchar() ; //当用单个字符输入的方法对二维数组进行输入时候,一定要注意\n会被在输入流中
//一并输入进去,所以要加getchar()将\n读走
}

/*计算混乱度,并将其复制在每行的第0位上*/
for(t=0 ; t<strNumber ; t++)
{
sort = sortness(DNA[t] , strLength) ;
DNA[t][0] = sort + 48;
}
for(y=0 ; y<strNumber-x ; y++)
if(DNA[y][0] > DNA[y+1][0])
strChange(DNA[y] , DNA[y+1]);
for(i=0 ; i<strNumber ; i++)
{
for(k=1 ; k<=strLength ; k++)
printf("%c" , DNA[i][k]) ;
printf("\n") ;
}
}
上述为我的代码,求指导~
题目网址:http://poj.org/problem?id=1007
展开
 我来答
porker2008
推荐于2016-01-26 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*计算混乱度函数*/
int sortness(char * DNA, int length)
{
int m = 1, n = 1;
int sort = 0;
for (m = 0; m < length; m++)
for (n = m + 1; n < length; n++)
{
if (DNA[m] > DNA[n])
sort++;
}
return sort;
}
/*交换两个字符串函数*/
void strChange(char * first, char * second)
{
char temp[100] = { 0 };
strcpy(temp, first);
strcpy(first, second);
strcpy(second, temp);
}
/*主函数*/
int main()
{
int sortness(char *, int);
int strLength = 0, strNumber = 0;
int i = 0, k = 1, t = 0, sort = 0;
int x = 0, y = 0, swaptemp;
char DNA[102][52] = { 0 };
int DNASort[102];
/*进行二维数组的输入*/
scanf("%d %d", &strLength, &strNumber);
for (i = 0; i<strNumber; i++)
{
for (k = 0; k < strLength; k++)
scanf(" %c", &DNA[i][k]);
DNA[i][strLength] = '\0';
}

/*计算混乱度,并将其复制在DNASort*/
for (t = 0; t<strNumber; t++)
{
sort = sortness(DNA[t], strLength);
DNASort[t] = sort;
}
for (x = 0; x < strNumber - 1; x++) {
for (y = 0; y<strNumber - x - 1; y++)
if (DNASort[y]  >  DNASort[y + 1]) {
strChange(DNA[y], DNA[y + 1]);
swaptemp = DNASort[y];
DNASort[y] = DNASort[y + 1];
DNASort[y + 1] = swaptemp;
}
}
for (i = 0; i<strNumber; i++)
{
for (k = 0; k < strLength; k++)
printf("%c", DNA[i][k]);
printf("\n");
}
}
更多追问追答
追问
我的代码是哪里出的问题呢?
追答
最大的问题是把sort的结果存放在DNA[t][0]
这个是最大的错误
DNA数组是char类型的,最大支持255的数值
如果sort的返回大于255,就必然出错
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式