poj 1002题一直现实wrong answer,但是自己测试正确
请大家帮忙看看,谢谢啦#include<stdio.h>#include<stdlib.h>#include<string.h>structs{charstr[20];i...
请大家帮忙看看,谢谢啦
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct s{
char str[20];
int i;
};
struct s nu[100000];
int cmp(const void *a,const void *b)
{
return ((int *)a)[0]-((int *)b)[0];
}
int main()
{
int m,n;
int i,j;
int x,z;
scanf("%d",&m);
for(n=0;n<m;n++)
{
scanf("%s",nu[n].str);
nu[n].i=1;
}
for(n=0;n<m;n++)
for(j=0;j<20;j++)
if( (nu[n].str[j]!='\0') && (j!=3) )
{
switch(nu[n].str[j])
{
case 'A':
case 'B':
case 'c':
nu[n].str[j]='2';
break;
case 'D':
case 'E':
case 'F':
nu[n].str[j]='3';
break;
case 'G':
case 'H':
case 'I':
nu[n].str[j]='4';
break;
case 'J':
case 'K':
case 'L':
nu[n].str[j]='5';
break;
case 'M':
case 'N':
case 'O':
nu[n].str[j]='6';
break;
case 'P':
case 'R':
case 'S':
nu[n].str[j]='7';
break;
case 'T':
case 'U':
case 'V':
nu[n].str[j]='8';
break;
case 'W':
case 'X':
case 'Y':
nu[n].str[j]='9';
break;
case '-':
while(nu[n].str[j]=='-')
{
i=j;
do{
nu[n].str[i]=nu[n].str[i+1];
i++;
}while(nu[n].str[i]);
}
j--;
break;
}
}
else if( j == 3 )
{
for(i=19;i>3;i--)
{
nu[n].str[i]=nu[n].str[i-1];
}
nu[n].str[j]='-';
}
qsort(nu,m,sizeof(struct s),cmp);
x = 1; z = 0;
for( i = 1; i < m; i++ )
{
if( strcmp( nu[i-1].str, nu[i].str ) )
{
if( x > 1 )
{
printf( "%s %d\n", nu[i-1].str, x );
z = 1;
}
x = 1;
}
else
{
x++;
}
}
if( x > 1 )
{
printf( "%s %d\n", nu[i-1].str, x );
z = 1;
}
if(z==0)
printf("No duplicates.\n");
return 0;
} 展开
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct s{
char str[20];
int i;
};
struct s nu[100000];
int cmp(const void *a,const void *b)
{
return ((int *)a)[0]-((int *)b)[0];
}
int main()
{
int m,n;
int i,j;
int x,z;
scanf("%d",&m);
for(n=0;n<m;n++)
{
scanf("%s",nu[n].str);
nu[n].i=1;
}
for(n=0;n<m;n++)
for(j=0;j<20;j++)
if( (nu[n].str[j]!='\0') && (j!=3) )
{
switch(nu[n].str[j])
{
case 'A':
case 'B':
case 'c':
nu[n].str[j]='2';
break;
case 'D':
case 'E':
case 'F':
nu[n].str[j]='3';
break;
case 'G':
case 'H':
case 'I':
nu[n].str[j]='4';
break;
case 'J':
case 'K':
case 'L':
nu[n].str[j]='5';
break;
case 'M':
case 'N':
case 'O':
nu[n].str[j]='6';
break;
case 'P':
case 'R':
case 'S':
nu[n].str[j]='7';
break;
case 'T':
case 'U':
case 'V':
nu[n].str[j]='8';
break;
case 'W':
case 'X':
case 'Y':
nu[n].str[j]='9';
break;
case '-':
while(nu[n].str[j]=='-')
{
i=j;
do{
nu[n].str[i]=nu[n].str[i+1];
i++;
}while(nu[n].str[i]);
}
j--;
break;
}
}
else if( j == 3 )
{
for(i=19;i>3;i--)
{
nu[n].str[i]=nu[n].str[i-1];
}
nu[n].str[j]='-';
}
qsort(nu,m,sizeof(struct s),cmp);
x = 1; z = 0;
for( i = 1; i < m; i++ )
{
if( strcmp( nu[i-1].str, nu[i].str ) )
{
if( x > 1 )
{
printf( "%s %d\n", nu[i-1].str, x );
z = 1;
}
x = 1;
}
else
{
x++;
}
}
if( x > 1 )
{
printf( "%s %d\n", nu[i-1].str, x );
z = 1;
}
if(z==0)
printf("No duplicates.\n");
return 0;
} 展开
2个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct s{
char str[50];//字符串开到50,太小会Wrong Answer
int i;
};
struct s nu[100010];
int cmp(const void *a,const void *b)
{
return strcmp(((char *)a),((char *)b));// 这里是字符串比较
}
int main()
{
int m,n;
int i,j;
int x,z;
scanf("%d",&m);
for(n=0;n<m;n++)
{
scanf("%s",nu[n].str);
nu[n].i=1;
}
for(n=0;n<m;n++)
for(j=0;j<50;j++)// j<50
if( (nu[n].str[j]!='\0') && (j!=3) )
{
switch(nu[n].str[j])
{
case 'A':
case 'B':
case 'C':// 这里是大写的‘C’
nu[n].str[j]='2';
break;
case 'D':
case 'E':
case 'F':
nu[n].str[j]='3';
break;
case 'G':
case 'H':
case 'I':
nu[n].str[j]='4';
break;
case 'J':
case 'K':
case 'L':
nu[n].str[j]='5';
break;
case 'M':
case 'N':
case 'O':
nu[n].str[j]='6';
break;
case 'P':
case 'R':
case 'S':
nu[n].str[j]='7';
break;
case 'T':
case 'U':
case 'V':
nu[n].str[j]='8';
break;
case 'W':
case 'X':
case 'Y':
nu[n].str[j]='9';
break;
case '-':
while(nu[n].str[j]=='-')
{
i=j;
do{
nu[n].str[i]=nu[n].str[i+1];
i++;
}while(nu[n].str[i]);
}
j--;
break;
}
}
else if( j == 3 )
{
for(i=49;i>3;i--)// j从49开始递减
{
nu[n].str[i]=nu[n].str[i-1];
}
nu[n].str[j]='-';
}
qsort(nu,m,sizeof(struct s),cmp);
x = 1; z = 0;
for( i = 1; i < m; i++ )
{
if( strcmp( nu[i-1].str, nu[i].str ) )
{
if( x > 1 )
{
printf( "%s %d\n", nu[i-1].str, x );
z = 1;
}
x = 1;
}
else
{
x++;
}
}
if( x > 1 )
{
printf( "%s %d\n", nu[i-1].str, x );
z = 1;
}
if(z==0)
printf("No duplicates.\n");
return 0;
}
这个可以AC,欢迎交流哈,满意请采纳。
富港检测技术(东莞)有限公司_
2024-05-27 广告
2024-05-27 广告
ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上。用于评...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询