#include <cstdlib> #include <stdio.h> #include <iostream> #include <string> using namespace std; int main(int argc, char *argv[]) { int d,len,n; char str[100]; getchar(); cin>>n; while(n--) { d=0; gets(str); len=strlen(str); //cout<<"len="<<len<<endl; for(int i=0;i<len;i++) { if(str[i]<0) d++; } cout<<d/2<<endl; } system("PAUSE"); return EXIT_SUCCESS; }
我的代码为什么超时呢?我对超时不太了解,超时有哪几种原因引起?能否总结一下,请大家赐教哈,在原有的代码基础上修改,谢谢啦!
#include <cstdlib> #include <stdio.h> #include <iostream> #include <string> using namespace std; int main(int argc, char *argv[]) { int d,len,n; int k=0; char str[10000]; cin>>n; cin.ignore(); int *countArray=(int*)malloc(n*sizeof(int)); while(n--) { d=0; gets(str); len=strlen(str); //cout<<"len="<<len<<endl; for(int i=0;i<len;i++) { if(str[i]<0) d++; } // cout<<d/2<<endl; countArray[k]=(int)d/2; k++; } for(int j=0;j<k;j++) { cout<<countArray[j]<<endl; } getchar(); return 0; }
修改成这个应该可以
请问一下,为什么我的会超时呢?
@Marshalkk:
是这两个函数的问题
getchar();
cin>>n;
你的n其实没有获取到值
具体你可以用断点调试。就会发现
是刚开始AC哈谢谢啦
是刚开始AC哈谢谢啦
超时的原因其实是这样的。 你最后不能加上
system("PAUSE");
其实这句话是让界面停止在DOS界面的语句。它是让系统停止。。你加上它自然就会超时啊。 你应该是刚开始ACM吧 。
其实最后的两句话都可以不要。return 0; 就行了!
是刚开始AC哈谢谢啦