poj 1002
2013-01-22 10:15
134 查看
寒假第一道OJ qsort对字符串排序的简单应用 昨晚WA了一晚上,没考虑到的情况,如果最后一个字符串和前一个字符串相同时,没有输出最后一个字符串
原码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Change (char *s1,char *s2,int n)
{
int i,j;
for (i=j=0; i<n; i++)
if(s1[i]!='-')
{
if (s1[i]<='9'&&s1[i]>='0')
s2[j++]=s1[i];
if (s1[i]<='C'&&s1[i]>='A')
s2[j++]='2';
if (s1[i]<='F'&&s1[i]>='D')
s2[j++]='3';
if (s1[i]<='I'&&s1[i]>='G')
s2[j++]='4';
if (s1[i]<='L'&&s1[i]>='J')
s2[j++]='5';
if (s1[i]<='O'&&s1[i]>='M')
s2[j++]='6';
if (s1[i]=='P'||s1[i]=='R'||s1[i]=='S')
s2[j++]='7';
if (s1[i]<='V'&&s1[i]>='T')
s2[j++]='8';
if (s1[i]<='Y'&&s1[i]>='W')
s2[j++]='9';
}
s2[j]='\0';
return 0;
}
int compare(const void *a,const void *b)
{
char *p1=(char *)a;
char *p2=(char *)b;
return strcmp(p1, p2);
}
int main()
{
int n,i,j,flag;
int num[100000]={0};
char ss[50],s[100000][8]={0};
scanf("%d",&n);getchar();
for ( i=0; i<n; i++ )
{
gets(ss);
Change(ss,s[i],strlen(ss) );
}
qsort(s,n,sizeof(s[0]),compare );
for ( flag=i=0;i<n;i++)
{
num[i]=1;
}
for ( i=1; i<n; i++)
{
if (!strcmp(s[i-1],s[i]))
num[i]+=num[i-1];
else if (num[i-1]>1)
{
flag=1;
for ( j=0; j<7; j++)
{
printf ("%c",s[i-1][j]);
if (j==2)printf ("-");
}
printf (" %d\n",num[i-1]);
}
}
if(num[i-1]>1)
{
flag=1;
for ( j=0; j<7; j++)
{
printf ("%c",s[i-1][j]);
if (j==2)printf ("-");
}
printf (" %d\n",num[i-1]);
}
if(!flag) printf ("No duplicates.\n");
return 0;
}
原码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Change (char *s1,char *s2,int n)
{
int i,j;
for (i=j=0; i<n; i++)
if(s1[i]!='-')
{
if (s1[i]<='9'&&s1[i]>='0')
s2[j++]=s1[i];
if (s1[i]<='C'&&s1[i]>='A')
s2[j++]='2';
if (s1[i]<='F'&&s1[i]>='D')
s2[j++]='3';
if (s1[i]<='I'&&s1[i]>='G')
s2[j++]='4';
if (s1[i]<='L'&&s1[i]>='J')
s2[j++]='5';
if (s1[i]<='O'&&s1[i]>='M')
s2[j++]='6';
if (s1[i]=='P'||s1[i]=='R'||s1[i]=='S')
s2[j++]='7';
if (s1[i]<='V'&&s1[i]>='T')
s2[j++]='8';
if (s1[i]<='Y'&&s1[i]>='W')
s2[j++]='9';
}
s2[j]='\0';
return 0;
}
int compare(const void *a,const void *b)
{
char *p1=(char *)a;
char *p2=(char *)b;
return strcmp(p1, p2);
}
int main()
{
int n,i,j,flag;
int num[100000]={0};
char ss[50],s[100000][8]={0};
scanf("%d",&n);getchar();
for ( i=0; i<n; i++ )
{
gets(ss);
Change(ss,s[i],strlen(ss) );
}
qsort(s,n,sizeof(s[0]),compare );
for ( flag=i=0;i<n;i++)
{
num[i]=1;
}
for ( i=1; i<n; i++)
{
if (!strcmp(s[i-1],s[i]))
num[i]+=num[i-1];
else if (num[i-1]>1)
{
flag=1;
for ( j=0; j<7; j++)
{
printf ("%c",s[i-1][j]);
if (j==2)printf ("-");
}
printf (" %d\n",num[i-1]);
}
}
if(num[i-1]>1)
{
flag=1;
for ( j=0; j<7; j++)
{
printf ("%c",s[i-1][j]);
if (j==2)printf ("-");
}
printf (" %d\n",num[i-1]);
}
if(!flag) printf ("No duplicates.\n");
return 0;
}
相关文章推荐
- POJ_1002_487-3279
- POJ 1002 4873279
- POJ 1002 练习
- poj 1002 487-3279
- poj 1002 487-3279 AC代码
- [POJ 1002] 487-3279 C++解题报告
- poj1002 -- 487-3279
- POJ1002
- poj_1002
- poj 1002之我见
- POJ 1002求487-3279解题报告——【PKU ACM】
- POJ 1002
- POJ1002 487-3279 WA了好几回 TUT
- 单调栈1002 POJ 2559 Largest Rectangle in a Histogram
- uva 755 poj 1002 487-3279
- POJ1002--487-3279
- poj 1002 487-3279
- POJ 1002 487-3279
- poj 1002
- POJ 1002 487-3279 map +暴力