poj 1007为何提交说是wrong answer

#include"iostream"intcalculate(char*p,intlen){intresult=0;for(inti=0;i<len;i++){chara... #include"iostream"
int calculate(char* p,int len)
{
int result=0;
for(int i=0;i<len;i++)
{
char a=*(p+i*sizeof(char));
for(int j=i+1;j<len;j++)
{

char b=*(p+j*sizeof(char));
switch(a)
{
case 'A': break;
case 'C':
{
if(b=='A') result++;
break;
}
case 'G':
{
if(b=='A'||b=='C') result++;
break;

}
case 'T':
{
if(b!='T') result++;
break;
}
}
}
}
return result;
}
void sort(char* p,int num,int len)
{
for(int i=0;i<num;i++)
{
for(int j=i+1;j<num;j++)
{
if(calculate(p+i*sizeof(char)*50,len)>calculate(p+j*sizeof(char)*50,len))
{
char *p1=p+i*sizeof(char)*50;
char *p2=p+j*sizeof(char)*50;
for(int a=0;a<len;a++)
{
char temp=NULL;
temp=*(p1+a*sizeof(char));
*(p1+a*sizeof(char))=*(p2+a*sizeof(char));
*(p2+a*sizeof(char))=temp;

}

}

}
}

}

int main()
{

int m=0;
int n=0;
scanf("%d",&n);
scanf("%d",&m);
getchar();
char a[100][50];
char* p=&a[0][0];

for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%c",&(a[i][j]));
if(j==n-1) { a[i][n]='\0';getchar();break;}
}
}

sort(p,m,n);
for(int i1=0;i1<m;i1++)
{
for(int j1=0;j1<n;j1++)
{
printf("%c",a[i1][j1]);
if(j1==n-1) printf("\n");
}
}

}
展开
 我来答
智趣派
推荐于2016-06-04 · TA获得超过3116个赞
知道小有建树答主
回答量:729
采纳率:100%
帮助的人:1002万
展开全部
Wrong Answer就是你程序有问题,跑出来的结果跟正确答案不一样!
建议你好好修改你的程序,用Debug的方式慢慢跑一边,这样发现错误了,对自己的提高会很大!
另外,要学会用STL中的标准库来做题,比如此题中的sort,就可以直接用,安全有效!
附上我的AC代码,写的很烂,仅供参开。
#include<iostream>
#include<algorithm>
#define N 54
#define M 105
using namespace std;
char str[M][N];

struct node
{
int num;
char *p;
}a[M];

bool less(struct node a,struct node b)
{
return a.num<b.num;
}
int main()
{
int m,n;
int i,j,k;
while(cin>>n>>m)
{
for(i=0;i<m;i++)
{
cin>>str[i];
a[i].p=str[i];
a[i].num=0;
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if(str[i][j]>str[i][k])
a[i].num++;
}
sort(a,a+m,less);
for(i=0;i<m;i++)
cout<<a[i].p<<endl;

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式