永发信息网

杭电ACM Time Limit Exceeded

答案:3  悬赏:80  手机版
解决时间 2021-03-07 20:49
  • 提问者网友:斑駁影
  • 2021-03-07 02:34
#include
#include
void main()
{
int n,i,j,t,m[1001],max;
char c[1001][16];
scanf("%d",&n);
while(n)
{
max=0;
for(i=0;i {
m[i]=0;
scanf("%s",c[i]);
}
for(i=0;i {
for(t=0;t {
if(strcmp(c[i],c[t])==0)
m[i]++;
}
if(m[i]>m[max])
max=i;
}
printf("%s\n",c[max]);
scanf("%d",&n);
}
}

杭电ACM 1004 怎么老超时???
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-03-07 02:46
#include
#include

int main()
{
int N,i,j;
char b[100][16];
int num[100];
int index,max,max_index;
char temp[16];
while(scanf("%d",&N)!=EOF)
{
getchar();
if(!N) break;
memset(num,0,sizeof(num));
index = 0;
max = 0;
for(i=0;i {
gets(temp);
for(j=0;j {
if(strcmp(temp,b[j])==0)
{
num[j]++;
break;
}
}
if(j==index)
{
strcpy(b[index],temp);
num[index]=1;
++index;
}
}
for(i=0;i {
if(num[i]>max)
{
max = num[i];
max_index = i;
}
}
printf("%s\n",b[max_index]);
}
return 0;
}

一楼给了个C++的.我就给个C的吧.C里面不能用STL,如果你用C就可以无视一楼的代码了.

1488797 2009-07-16 04:14:14 Accepted 1004 0MS 224K 671 B C porker2008
全部回答
  • 1楼网友:酒安江南
  • 2021-03-07 05:05
你的算法复杂度O(N^2)的,我的O(N)的。。。 #include #include #include using namespace std; int main() { int n; mapmp; map::iterator it; while(cin>>n&&n) { mp.clear(); string s; for(int i=0;i>s; if(mp.find(s)!=mp.end()) mp[s]++; else mp.insert(pair(s,1)); } string ans; int ma=0; for(it=mp.begin();it!=mp.end();it++) if(it->second>ma) { ans=it->first; ma=it->second; } cout<
  • 2楼网友:鸽屿
  • 2021-03-07 04:19
b的值最大有2^30 一次遍历下来当然会t咯 看看我的代码把 #include&lt;iostream&gt; #include&lt;cmath&gt; using namespace std; int main() { int a, b; int s[10][10] = { {1, 0}, {1, 1}, {4, 2, 4, 8, 6}, {4, 3, 9, 7, 1}, {2, 4, 6}, {1, 5}, {1, 6}, {4, 7, 9, 3, 1}, {4, 8, 4, 2, 6}, {2, 9, 1} }; while(2 == scanf(&quot;%d %d&quot;, &amp;a, &amp;b)) { a %= 10; b %= s[a][0]; if(!b) b = s[a][0]; printf(&quot;%d\n&quot;, s[a][b]); } return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯