问题描述
- 为什么这段代码会超时(自己试了试不会啊)?
-
http://noi.openjudge.cn/ch0302/1748/#include <stdlib.h> #include<iostream> #include<cmath> #include<string> using namespace std; void returnint(int,int); int main() { int d1 = 1, d2 = 1, mn = 0,source[2][100],k=0; while (1) { cin >> source[0][k]; cin >> source[1][k]; if (source[0][k] == 0 || &source[1][k]==0)break; k++; } for (int t=0;t<k;t++) returnint(source[0][t], source[1][t]); //system("PAUSE"); return 0; } void returnint(int d1, int d2) { if (d1 == 0 || d2 == 0) return; int monkey[310] = { 0 },gap=0; for (int i = 0; i < d1; i++) monkey[i + 1] = 1; if (d1 < d2) d2 %= d1; //确定剩余的猴子→确定退出的猴子 int i1 = 1, dnum = 0;//dnum:退出个数 while (1) { if (monkey[i1] == 1) { gap++; if (gap == d2) { monkey[i1] = 0; dnum++; gap = 0; } } if (dnum == (d1)) { cout << i1 << endl; break; } i1++; if (i1 > d1) i1 %= d1; } }
解决方案
如果在本地可以,而oj这些上runtime error,这个并没有动态,就是访问出界了吧,数组开小了?oj上测试数据多……
时间: 2024-11-10 00:17:42