
POJ,1002,一直是Wrong answer 琢磨了好长时间,求大神。。。
#include<iostream>#include<string>#include<stdlib.h>#include<algorithm>usingnamespace...
#include<iostream>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int Transition(string s,char map []);
int compare (const void * a, const void * b) ;
int main(int argc, char*argv[])
{
char map[26]={'2','2','2','3','3','3',
'4','4','4','5','5','5','6','6','6',
'7','7','7','7','8','8','8','9','9','9','9'};
int i=0;
int count;
cin>>count;
string s;
int * exe=(int *)malloc(count*sizeof(int));
for(;i<count;i++)
{
cin>>s;
exe[i]=Transition(s,map);
}
int k=1;
int num;
int exchange;
qsort(exe,count,sizeof(int),compare);
int tag=0;
char god[8];
//计算次数并输出..
for(i=0;i<count-1;i++)
{
if(exe[i]!=exe[i+1])
continue;
else
{
num=1;
for(k=i+1;k<count;k++)
{
if(exe[k]==exe[i])
num++;
else
break;
}
}
tag=1;
_itoa(exe[i], god, 10);
i=i+num-1;
for(k=0;god[k]!='\0';k++)
{
if(k==3)
cout<<'-';
cout<<god[k];
}
cout<<" "<<num<<endl;
}
if(tag==0)
cout<<"No duplicates."<<endl;
free(exe);
return 0;
}
int Transition(string s,char map [])
{
string s1="0000000";
int i=0,j=0;
for(;i<s.length();i++)
{
if(s[i]=='-'||s[i]=='Q'||s[i]=='Z')
continue;
if(s[i]<='9'&&s[i]>='0')
{
s1[j++]=s[i];
continue;
}
if(s[i]>='A'&&s[i]<='Z')
s1[j++]=map[s[i]-'A'];
}
const char *god=s1.c_str();
return atoi(god);
}
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
C++ 编写的 ,琢磨了好长时间,还是不知道答案。总是通不过,求帮忙。 展开
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int Transition(string s,char map []);
int compare (const void * a, const void * b) ;
int main(int argc, char*argv[])
{
char map[26]={'2','2','2','3','3','3',
'4','4','4','5','5','5','6','6','6',
'7','7','7','7','8','8','8','9','9','9','9'};
int i=0;
int count;
cin>>count;
string s;
int * exe=(int *)malloc(count*sizeof(int));
for(;i<count;i++)
{
cin>>s;
exe[i]=Transition(s,map);
}
int k=1;
int num;
int exchange;
qsort(exe,count,sizeof(int),compare);
int tag=0;
char god[8];
//计算次数并输出..
for(i=0;i<count-1;i++)
{
if(exe[i]!=exe[i+1])
continue;
else
{
num=1;
for(k=i+1;k<count;k++)
{
if(exe[k]==exe[i])
num++;
else
break;
}
}
tag=1;
_itoa(exe[i], god, 10);
i=i+num-1;
for(k=0;god[k]!='\0';k++)
{
if(k==3)
cout<<'-';
cout<<god[k];
}
cout<<" "<<num<<endl;
}
if(tag==0)
cout<<"No duplicates."<<endl;
free(exe);
return 0;
}
int Transition(string s,char map [])
{
string s1="0000000";
int i=0,j=0;
for(;i<s.length();i++)
{
if(s[i]=='-'||s[i]=='Q'||s[i]=='Z')
continue;
if(s[i]<='9'&&s[i]>='0')
{
s1[j++]=s[i];
continue;
}
if(s[i]>='A'&&s[i]<='Z')
s1[j++]=map[s[i]-'A'];
}
const char *god=s1.c_str();
return atoi(god);
}
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
C++ 编写的 ,琢磨了好长时间,还是不知道答案。总是通不过,求帮忙。 展开
1个回答
展开全部
mark 一下…… 看了好长时间
更多追问追答
追问
Transition函数是将输入的字符串转换 最后返回一个int 类型的数值,然后进行排序利用qsort,最后进行输出方面的处理。并且计数。
追答
我看不出来……记得我做的时候开了个大布尔数组判重的……再看看…………
_itoa 不是 ANSI C 的函数呃,有关系吗?

2025-02-17 广告
联韬企业管理咨询有限公司是专注在供应链管理和运营管理领域的培训咨询机构,承办CPIM/CSCP/CLTD/SCOR DS认证项目的教育培训及考试管理,为企业和个人提供教育培训,专业认证考试和咨询指导服务。帮助企业实施和改进管理流程;提高管理...
点击进入详情页
本回答由上海联韬企业提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询