poj1002与poj1007测试数据的结果正确但在线判题判错 请找出问题,并给出修正方案(不要改算法)。 80
poj1002#include<stdio.h>intchange(charword0);boolflag=true;voidrang(intk0,longnum0[])...
poj1002
#include<stdio.h>
int change(char word0);
bool flag=true;
void rang(int k0,long num0[]);
int main(){
long num[100000];
char word;
int i,j,k,m=0;
scanf("%d",&k);
for(i=0;i<k;i++){
num[i]=0;
fflush(stdin);
for(j=0;j<7;){
scanf("%c",&word);
if(word=='-') continue;
num[i]*=10;
num[i]+=change(word);
j++;
}
}
rang(k,num);
flag=true;
for(i=0;i<k-1;i++)
if(num[i]==num[i+1])
m++;
else if(m>0){
printf("%ld-%ld %d\n",num[i]/10000,num[i]%10000,m+1);
m=0;
flag=false;
}
if(m>0){
printf("%ld-%ld %d\n",num[i]/10000,num[i]%10000,m+1);
m=0;
flag=false;
}
if(flag)
printf("No duplicates.\n");
return 0;
}
int change(char word0){
if(word0>='A'&&word0<='Z'){
switch(int(word0-'A')){
case 0:
case 1:
case 2:return 2;
case 3:
case 4:
case 5:return 3;
case 6:
case 7:
case 8:return 4;
case 9:
case 10:
case 11:return 5;
case 12:
case 13:
case 14:return 6;
case 15:
case 17:
case 18:return 7;
case 19:
case 20:
case 21:return 8;
case 22:
case 23:
case 24:return 9;
}
}
else
return word0-'0';
}
void rang(int k0,long num0[]){
int i0;
long a0;
while(flag){
flag=false;
for(i0=0;i0<k0-1;i0++){
if(num0[i0]>num0[i0+1]){
a0=num0[i0];
num0[i0]=num0[i0+1];
num0[i0+1]=a0;
flag=true;
}
}
}
}
poj1007
#include<stdio.h>
int main(){
int i,j,t,n,m,k[100],p[100];
bool flag=true;
char ch[50][100];
scanf("%d%d",&n,&m);
for(i=0;i<m;i++){
p[i]=i;
k[i]=0;
scanf("%s",ch[i]);
}
for(i=0;i<m;i++)
for(j=0;j<n-1;j++)
for(t=j+1;t<n;t++)
if(ch[i][j]>ch[i][t])
k[i]++;
while(flag){
flag=false;
for(i=0;i<m-1;i++){
if(k[p[i]]>k[p[i+1]]){
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
flag=true;
}
}
}
for(i=0;i<m;i++)
printf("%s\n",ch[p[i]]);
return 0;
}
原题:
http://poj.org/problem?id=1002
http://poj.org/problem?id=1007 展开
#include<stdio.h>
int change(char word0);
bool flag=true;
void rang(int k0,long num0[]);
int main(){
long num[100000];
char word;
int i,j,k,m=0;
scanf("%d",&k);
for(i=0;i<k;i++){
num[i]=0;
fflush(stdin);
for(j=0;j<7;){
scanf("%c",&word);
if(word=='-') continue;
num[i]*=10;
num[i]+=change(word);
j++;
}
}
rang(k,num);
flag=true;
for(i=0;i<k-1;i++)
if(num[i]==num[i+1])
m++;
else if(m>0){
printf("%ld-%ld %d\n",num[i]/10000,num[i]%10000,m+1);
m=0;
flag=false;
}
if(m>0){
printf("%ld-%ld %d\n",num[i]/10000,num[i]%10000,m+1);
m=0;
flag=false;
}
if(flag)
printf("No duplicates.\n");
return 0;
}
int change(char word0){
if(word0>='A'&&word0<='Z'){
switch(int(word0-'A')){
case 0:
case 1:
case 2:return 2;
case 3:
case 4:
case 5:return 3;
case 6:
case 7:
case 8:return 4;
case 9:
case 10:
case 11:return 5;
case 12:
case 13:
case 14:return 6;
case 15:
case 17:
case 18:return 7;
case 19:
case 20:
case 21:return 8;
case 22:
case 23:
case 24:return 9;
}
}
else
return word0-'0';
}
void rang(int k0,long num0[]){
int i0;
long a0;
while(flag){
flag=false;
for(i0=0;i0<k0-1;i0++){
if(num0[i0]>num0[i0+1]){
a0=num0[i0];
num0[i0]=num0[i0+1];
num0[i0+1]=a0;
flag=true;
}
}
}
}
poj1007
#include<stdio.h>
int main(){
int i,j,t,n,m,k[100],p[100];
bool flag=true;
char ch[50][100];
scanf("%d%d",&n,&m);
for(i=0;i<m;i++){
p[i]=i;
k[i]=0;
scanf("%s",ch[i]);
}
for(i=0;i<m;i++)
for(j=0;j<n-1;j++)
for(t=j+1;t<n;t++)
if(ch[i][j]>ch[i][t])
k[i]++;
while(flag){
flag=false;
for(i=0;i<m-1;i++){
if(k[p[i]]>k[p[i+1]]){
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
flag=true;
}
}
}
for(i=0;i<m;i++)
printf("%s\n",ch[p[i]]);
return 0;
}
原题:
http://poj.org/problem?id=1002
http://poj.org/problem?id=1007 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询