杭电 1015 Safecracker Runtime Error(ACCESS_VIOLATION)

code_zhang 2009-07-07 04:43:52
杭电 1015 Safecracker
测试数据:
1234567 THEQUICKFROG
1 ABCDEFGHIJKL
11700519 ZAYEXIWOVU
3072997 SOUGHT
0 E
673829 ABCDEFGHIJKLMNOPQRSTUVWXYZ
123456 ABCDEFGHIJKLMNOPQRSTUVWXYZ
347587 ABCDEFGHIJKLMNOPQRSTUVWXYZ
123787 ABCDEFGHIJKLMNOPQRSTUVWXYZ
342321 ABCDEFGHIJKLMNOPQRSTUVWXYZ
334341 ABCDEFGHIJKLMNOPQRSTUVWXYZ
342354 ABCDEFGHIJKLMNOPQRSTUVWXYZ
0 END

测试结果:
no solution
LKEBA
YOXUZ
GHOST
no solution
no solution
no solution
GZQUN
UVXOK
no solution
YQLNM
no solution
Press any key to continue

测试结果如题目要求都吻合,但是在杭电ACM一直通不过:Runtime Error(ACCESS_VIOLATION) 请高人指教。

我的代码:
#include<iostream>
#include<cstring>
using namespace std;

int main()
{

int N=0;
long int sum;
char letter[100];
int ii=0,t[100],_t[100],flag[100];
t[0]=0;_t[0]=0;flag[0]=0;
char T[100][100];
int code[100],temp[100][100];
cin>>sum>>letter;
while(sum!=0||strcmp(letter,"END")!=0)
{
int n=strlen(letter);
for(int I=0;I<n;I++)
code[I]=letter[I]-'A'+1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++)
for(int l=0;l<n;l++)
for(int m=0;m<n;m++)
if(i!=j&&i!=k&&i!=l&&i!=m&&j!=k&&j!=l&&k!=m&&k!=l&&k!=m&&l!=m)
if(code[i]-code[j]*code[j]+code[k]*code[k]*code[k]-code[l]*code[l]*code[l]*code[l]+code[m]*code[m]*code[m]*code[m]*code[m]==sum)
{
flag[N]=1;
temp[N][ii]=i;
T[N][ii]=letter[i];
T[N][ii+1]=letter[j];
T[N][ii+2]=letter[k];
T[N][ii+3]=letter[l];
T[N][ii+4]=letter[m];
if(temp[N][ii]>=t[N])
{
t[N]=temp[N][ii];
_t[N]=ii;
}
ii++;
}
N++;
cin>>sum>>letter;
}
for(int q=0;q<N;q++)
{
if(flag[q]!=1) cout<<"no solution"<<endl;
if(flag[q]==1)
{
for(int i=_t[q];i<_t[q]+5;i++)
cout<<T[q][i];
cout<<endl;
}
}

return 0;
}

...全文
809 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
code_zhang 2009-07-08
  • 打赏
  • 举报
回复
经过一段时间的推敲,终于A掉了1015,看来是还是算法没有把结果的可能性遍及全面,现在准备先看数据结构,做一些容易的题目,等有了系统性的知识后,再做一些需要高阶逻辑的算法问题。

#include<iostream>
#include<cstring>
#define MAX 10000
using namespace std;

int main()
{
long int target;
char letter[MAX],T[MAX];
int cd[MAX];
cin>>target>>letter;
while(target!=0||strcmp(letter,"END")!=0)
{
int flag=0;
char res[6];
memset(res,0,sizeof(res));
int n=strlen(letter);
for(int i=0;i<n;i++)
cd[i]=letter[i]-'A'+1;
for(int v=0;v<n;v++)
for(int w=0;w<n;w++)
{
if(v==w) continue;
for(int x=0;x<n;x++)
{
if(x==v||x==w) continue;
for(int y=0;y<n;y++)
{
if(y==v||y==w||y==x) continue;
for(int z=0;z<n;z++)
{
if(z==v||z==w||z==x||z==y) continue;
if((cd[v]-cd[w]*cd[w]+cd[x]*cd[x]*cd[x]-cd[y]*cd[y]*cd[y]*cd[y]+cd[z]*cd[z]*cd[z]*cd[z]*cd[z])==target)
{
T[0]=letter[v];
T[1]=letter[w];
T[2]=letter[x];
T[3]=letter[y];
T[4]=letter[z];
T[5]='\0';
if(strcmp(T,res)>0)
strcpy(res,T);
}
}
}
}
}
if(!res[0])
puts("no solution");
else
puts(res);
cin>>target>>letter;
}
return 0;
}


code_zhang 2009-07-07
  • 打赏
  • 举报
回复
#include<iostream>
#include<cstring>
using namespace std;

int main()
{
long int sum;
char letter[26];
int ii=0,t,_t,flag;
_t=0;_t=0;flag=0;
char T[26];
int code[26],temp[26];
cin>>sum>>letter;
while(sum!=0||strcmp(letter,"END")!=0)
{
getchar();
int n=strlen(letter);
for(int I=0;I<n;I++)
code[I]=letter[I]-'A'+1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++)
for(int l=0;l<n;l++)
for(int m=0;m<n;m++)
if(i!=j&&i!=k&&i!=l&&i!=m&&j!=k&&j!=l&&k!=m&&k!=l&&k!=m&&l!=m)
if(code[i]-code[j]*code[j]+code[k]*code[k]*code[k]-code[l]*code[l]*code[l]*code[l]+code[m]*code[m]*code[m]*code[m]*code[m]==sum)
{
flag=1;
temp[ii]=i;
T[ii]=letter[i];
T[ii+1]=letter[j];
T[ii+2]=letter[k];
T[ii+3]=letter[l];
T[ii+4]=letter[m];
if(temp[ii]>=t)
{
t=temp[ii];
_t=ii;
}
t=0;
ii++;
}
if(flag!=1) cout<<"no solution"<<endl;
if(flag==1)
{
for(int iii=_t;iii<_t+5;iii++)
cout<<T[iii];
cout<<endl;
}
flag=0;t=0;_t=0;
cin>>sum>>letter;
}
return 0;
}


改成这样 结果就wrong了
kimi169 2009-07-07
  • 打赏
  • 举报
回复
对不起 没看你的代码== 自己仔细查找下吧~,测试数据要考虑到所有情况
runtime error 的错误是非法访问了内存 比如数组越界 或者堆栈溢出
做ACM请仔细阅读FAQ先! 出错请注意错误信息
code_zhang 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kimi169 的回复:]
是runtime error啊 程序开销大
[/Quote]

是数组空间申请太大了吗
kimi169 2009-07-07
  • 打赏
  • 举报
回复
是runtime error啊 程序开销大

64,690

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧