POJ 1702 怎么就TLE了 还是纪念一下 第一个独立完成的递归
2009-09-03 22:27
615 查看
一个case最多递归20次 就TLE了 递归的代价真的那么吓人?
换成非递归做?
暂时没这个毅力了。。。
经过分析问题终于独立想出了这个递归的解法 表扬一下自己
纪念一下 尽管是个TLE
Eva's Balance
Description
Eva has a balance with 20 poises. The weights of the poises are 1, 3, 9, 27,...,3^19. Eva asserts that she has a way to measure any object whose weight is an integer from 1 to (3^20-1)/2. Assuming that Eva has placed an object with the weight in this range on the left tray of the balance, your task is to place the proper poises on the proper trays so as to weigh the object out.
Input
The first line is an integer T (1 <= T <= 20), which shows the number of the test cases. Each of the following T lines contains an integer W (1 <= W <= (3^20-1)/2), expressing the weight of an object.
Output
For each test case print a line, showing the weights of the poises on the left tray and the right tray. Use a space to separate the left tray and the right tray. The poises on the same tray are arranged in the increasing order, and a comma separates every two of them. If there is no poise on the tray, output "empty".
Sample Input
Sample Output
Source
POJ Monthly--2004.07.18
My TLE Code:
换成非递归做?
暂时没这个毅力了。。。
经过分析问题终于独立想出了这个递归的解法 表扬一下自己
纪念一下 尽管是个TLE
Eva's Balance
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 2616 | Accepted: 1278 |
Eva has a balance with 20 poises. The weights of the poises are 1, 3, 9, 27,...,3^19. Eva asserts that she has a way to measure any object whose weight is an integer from 1 to (3^20-1)/2. Assuming that Eva has placed an object with the weight in this range on the left tray of the balance, your task is to place the proper poises on the proper trays so as to weigh the object out.
Input
The first line is an integer T (1 <= T <= 20), which shows the number of the test cases. Each of the following T lines contains an integer W (1 <= W <= (3^20-1)/2), expressing the weight of an object.
Output
For each test case print a line, showing the weights of the poises on the left tray and the right tray. Use a space to separate the left tray and the right tray. The poises on the same tray are arranged in the increasing order, and a comma separates every two of them. If there is no poise on the tray, output "empty".
Sample Input
3 9 5 20
Sample Output
empty 9 1,3 9 1,9 3,27
Source
POJ Monthly--2004.07.18
My TLE Code:
#include <iostream> using namespace std; int poises[20]={0};//-1表示放左侧,0表示不放,1表示放右侧 int cube_of_3[21]; int l[20]={0},r[20]={0}; void weight_it(int wei,int side) { int base = 0; for (;base <= 20;base++) { if ((cube_of_3[base]-1)/2<wei&&wei<=(cube_of_3[base+1]-1)/2) { poises[base]=side; break; } } if (wei-cube_of_3[base]==0) return; else if (wei-cube_of_3[base]>0) weight_it(wei-cube_of_3[base],side); else weight_it(-(wei-cube_of_3[base]),-side); } int main() { int count; cin>>count; cube_of_3[0] = 1; for (int i = 1;i < 20;i++) cube_of_3[i] = 3*cube_of_3[i-1]; while (count--) { memset(l,0,sizeof(l)); memset(r,0,sizeof(r)); memset(poises,0,sizeof(poises)); int weight; cin>>weight; weight_it(weight,1); int j = 0,k = 0; for (int i = 0;i < 20;i++) { if (poises[i]==-1) { l[j++]=cube_of_3[i]; } else if(poises[i]==1) { r[k++]=cube_of_3[i]; } } if(j==0) cout<<"empty"; for (int i = 0;i < j;i++) { cout<<l[i]; if(i!=j-1) cout<<","; } cout<<" "; if(k==0) cout<<"empty"; for (int i = 0;i < k;i++) { cout<<r[i]; if(i!=k-1) cout<<","; } cout<<endl; } }
相关文章推荐
- 坚持#第61天~第一个自制网页完成啦!(独立纯手写)
- php大力力 [017节]来来来,庆祝一下🎁大力力第一个数据库录入程序完成!
- 请问一下 我怎么判断对方发送的是文本 还是文件呢
- 纪念一下我的第一个小程序(五子棋)
- 我的第一个独立完成的小项目(非框架,仅是面向过程的一次小项目)
- 自己独立完成的第一个动画-平抛曲线的生成
- 还是应该纪念一下的 - Star Tales的Benchmark
- 哈哈。 我的第一个andriod程序(hello andriod),纪念一下
- 纪念一下我做出来的第一个贪心算法题 还用了结构体喔。
- 今天对于图又有了更深的理解,可是还是有问题,那个非递归的深度优先不知道怎么的,好像不能够完全遍历。有点郁闷呀。
- android第一个应用上架,纪念一下
- poj 1416 Shredding Company (应该是用dfs吧,但是想了一下午不知道怎么递归来做,所以暴力做了)
- POJ 1953 我爱递归 可是递归不爱我 再次TLE
- uart——我的第一个独立完成的fpga程序
- 【hdu 2544】 最短路 (dijkstra 写的第一个最短路,也是dijkstra算法,纪念一下)
- 第一个offer,纪念一下
- 真正意义上我写的第一个shell,纪念一下
- zerg发出了第一个报文,纪念一下!!!
- 第一个app终于上线了,纪念一下【2012-5-24】
- POJ 3278 第一道BFS 100题 纪念一下