鸡兔同笼:Time Limit Exceeded?试着把时间复杂度降下来吧
来源:互联网 发布:快读总是网络错误 编辑:程序博客网 时间:2024/03/29 04:44
北大-计算概论-练习-鸡兔同笼
http://ica.openjudge.cn/base1/5/
【一开始的解答】
#include<stdio.h>main(){int repeat,a,min,max,ri,i,j,flag;scanf("%d",&repeat);for(ri=0;ri<repeat;ri++){scanf("%d",&a);min=a;max=0;flag=0;for(i=0;i<=a;i++){for(j=0;j<=a;j++){if(2*i+4*j==a){flag=1;if(i+j<min) min=i+j; else if(i+j>max) max=i+j;}}}if(flag==1) printf("%d %d\n",min,max); else printf("0 0\n"); }}
提交之后,总是提示Time Limit Exceeded.
【然后】
#include<stdio.h>main(){int repeat,a,min,max,ri,i,j,flag;scanf("%d",&repeat);for(ri=0;ri<repeat;ri++){scanf("%d",&a);min=a;max=0;flag=0;for(i=0;i<=a/2;i++)//变化在这里{for(j=0;j<=(a-2*i)/4;j++)//还有这里{if(2*i+4*j==a){flag=1;if(i+j<min) min=i+j; else if(i+j>max) max=i+j;}}}if(flag==1) printf("%d %d\n",min,max); else printf("0 0\n"); }}
还是不对
【正确解答】
问题的关键,在于前面的程序的时间复杂度都是O(n^2)
于是,我们试着减少一层for循环的嵌套
#include<stdio.h>main(){int repeat,a,min,max,ri,i,flag;scanf("%d",&repeat);for(ri=0;ri<repeat;ri++){scanf("%d",&a);min=a;max=0;flag=0;for(i=0;i<=a/2;i++){if((a-2*i)%4==0&&(a-2*i)/4>=0){flag=1;if(i+(a-2*i)/4<min) min=i+(a-2*i)/4; else if(i+(a-2*i)/4>max) max=i+(a-2*i)/4;}}if(flag==1) printf("%d %d\n",min,max); else printf("0 0\n"); }}
AC.
0 0
- 鸡兔同笼:Time Limit Exceeded?试着把时间复杂度降下来吧
- uva131 Time limit exceeded
- Time Limit Exceeded 解析
- E. Time Limit Exceeded?
- Time Limit Exceeded
- SPOJ Time Limit Exceeded
- 避免 Time Limit Exceeded
- Time Limit Exceeded 原因
- ACM中关于Output Limit Exceeded和Time Limit Exceeded
- ACM中关于Output Limit Exceeded和Time Limit Exceeded
- 10044-Erdos number Time limit exceeded
- POJ 1423. BigNumber (Time Limit Exceeded)
- spoj 2829 Time Limit Exceeded (DP)
- Sicily 1063 Time Limit Exceeded我日
- 关于Time Limit Exceeded可能的原因
- UVa694 - The Collatz Sequence:Time limit exceeded
- 4.【Hard】LRU Cache--Time Limit Exceeded
- Time limit exceeded 出现的原因
- linux awk 编辑passwd
- android常用组件
- 写点贝塞尔曲线
- c# 类型转换
- poj1363
- 鸡兔同笼:Time Limit Exceeded?试着把时间复杂度降下来吧
- android开源项目
- 求勾搭 求领走 (笑话)
- 如何在DOS窗口中显示UTF-8字符
- HDU1540 Tunnel Warfare(线段树:维护最大连续子串)
- 修改tomcat默认iso8859-1的编码编码方式
- Top Android App使用的组件 3
- 有些jsp显示multiple annotations found at this line
- hdu2063(二分图的最大匹配)