杭电1004题Runtime Error (ACCESS_VIOLATION)为什么?

#include"stdio.h"
#include"string.h"
int main()
{
char a[100][100];
int n,i,j,b[100];
while(scanf("%d",&n)!=EOF)
{
int space=0,h=0;
for(i=0;i<100;i++)
b[i]=1;
if(n==0)
break;
else if(n==1)
{
scanf("%s",a[0]);
printf("%s\n",a[0]);
}
else
{
space=0;
for(i=0;i<n;i++)
{
scanf("%s",a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(a[i],a[j])==0)
{
b[i]++;
}
}
if(b[i]>h)
h=b[i];
}
for(i=0;i<n;i++)
{
if(space==1)
printf(" ");
if(b[i]==h)
printf("%s",a[i]);
space=1;
}
printf("\n");
}
}
}

char a[100][100];
数组太小,题目要求可能输入1000个,改过后wrong answer

用C++的map比较好实现

#include <iostream>
#include <string>
#include <map>
using namespace std;
map<string,int>M;
map<string,int>::iterator p,q;
int n;
int main()
{
string str;
while(scanf("%d",&n)!=EOF&&n)
{
M.clear();
while(n--)
{
cin>>str;
if(M[str]==0)
M[str]=1;
else
M[str]++;
}
int m=-1;
for(p=M.begin();p!=M.end();p++)
{
if((p->second)>m)
{
m=p->second;
q=p;
}
}
cout<<q->first<<endl;
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

为什么提示Runtime Error(ACCESS_VIOLATION)?我用c语言,我自己的CF4...
可能是算法问题,复杂度太大,超过运行时间。在杭电有时间限制的

...已提交就是Runtime Error (ACCESS_VIOLATION)啊,请问是哪的问题_百...
runtime - error, 表示运行时错误, (access violation 表示访问越界)问题出在你的p指针上, 当执行完组数据时, 你的p指针没有指向申请的空间的起始地址,而是 当前这组测试数据的最后一个字符的地址, 当执行多组数据后,p指针会指向申请空间意外的地方,所以访问越界。我加了一个q指针, 保存申...

杭电acm总是Runtime Error (ACCESS_VIOLATION)
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:除以零 数组越界:int a[3]; a[10000000]=10 指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10 使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *...

...为什么总是提示Runtime Error(ACCESS_VIOLATION),我测试结果没问题啊...
Runtime Error一般是数组越界, 可能你数组定义小了

杭电OJ1004题,结果Runtime Error(ACCESS_VIOLATION),请大牛为我查错
题目说每种颜色最多15个字符,而你的程序中char name[15];显然你忽略了字符串最后一个结束符0,起码应该改为char name[16];另外还有一个问题, 你忘记初始化q了,你仅仅只是给q赋了一个全局的初值0,每个case开始的时候都应该初始化。 在while(N){的第一句写q=0;这样就可以了 ...

杭电acm1003为什么都过不了,显示Runtime Error(ACCESS_VIOLATION)
你的 mm 没有赋初值,所以会Runtime Error 还有就是 while的循环结束条件不足,如果到最后 m还是没有==0你就错了 这是ac的代码 include

杭电2084数塔的问题...Runtime Error (ACCESS_VIOLATION)
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10;③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free...

杭电1235,结果是Runtime Error(ACCESS_VIOLATION)为什么?
include<stdio.h> int main(){ int n,i,b,s,l=0;int a[1000];while(scanf("%d",&n)&&n!=0){ s=0;l=0;\/\/看这里 for(i=0;i<n;i++){ scanf("%d",&a[i]);l++;} scanf("%d",&b);for(i=0;i<l;i++){ if(a[i]==b)s=s+1;} printf("%d\\n",s);} return...

杭电acm2023,Runtime Error (ACCESS_VIOLATION)?
\/\/后面程序访问到 n 所以应该定义为a[51][6] while(scanf("%d%d", &n, &m) != EOF) { count1 = count2 = 0; for(i = 0; i <= n; i++) for(j = 0; j <= m; j++) a[i][j] = 0; for(i = 1; i <= n; i++) for(j = 1; j ...

...杭电ACM上就显示runtime,error ACCESS_VIOLATION,求大神讲解_百度知 ...
char string_color[1000][15];char *string_num_max1[1000];可能是堆栈大小的问题,你这些变量都是在堆栈里分配的,换成动态分配试试.

相似回答
大家正在搜