北大ACM1002题不知道哪里出问题了
这是我的代码,就是第6个位置(a[i][5])不知道哪里出错了
希望你们能帮忙看一下
不胜感谢!
#include
#include
void main(void)
{
int n,i,j,tmp,count;
char a[50][20];
char b[20];
char *pa[50];
//读入n
scanf("%d",&n);
getchar();
//读入数据
for (i=0; i0)
{
strcpy(b,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],b);
}
}
}
//输出
for (i=0; i<n;)
{
count=1;
for(j=i 1; strcmp(a[i],a[j])==0; j )
{
count ;
}
if(count!=1)
printf("%s %d ",a[i],count);
i=j;
}
if (count==1)
printf("No duplicates. ");
}
几个错误
1。 输入量较大,你的空间不够
2。 输入量较大,冒泡明显不合时间要求
3。 strcpy的用法错误,体现在strcpy(&a[i][4],&a[i][3]),这里strcpy的两个地址出现空间重合
修改后会得到TLE的Verdict。
#include
#include
main(void)
{
int signal = 1;
int n,i,j,tmp,count;
char a[100000][20];
char b[20];
// char *pa[50];
//读入n
scanf("%d",&n);
getchar();
//读入数据
for (i=0; i0)
{
strcpy(b,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],b);
}
}
}
//输出
for (i=0; i{
count=1;
for(j=i 1; strcmp(a[i],a[j])==0; j )
{
count ;
signal = 0;
}
if(count!=1)
printf("%s %d ",a[i],count);
i=j;
}
if (signal==1)
printf("No duplicates。
");
}。