1005. 继续(3n+1)猜想 (25)
来源:互联网 发布:淘宝女式薄绒内衣套装 编辑:程序博客网 时间:2024/05/01 08:20
我的思路:因为题中所给数据量不大,我考虑 建立一个 二维数组 TabTab[][0]记录 是否覆盖( 1表示覆盖 ) Tab[][1]记录是否存在输入的序列中( 1表示存在 )在读入数据后 首先 一遍for循环 按顺序遍历 确定 i 是否为输入的元素 如果是则寻找序列中 被该元素 i 覆盖的元素 并相应 Tab[][0]置1下一次 for 循环 再遍历一遍 Tab 由 Tab[i][1]==1 && Tab[i][0]==0 确定 i 存在 所给序列 并且 未被覆盖 则 归纳到 一个新的数组中排序 后逆序输出··总结:花了两个小时···调试出的错误 有①判断循环终止条件的逻辑不对②在打表的for循环中 忽视了 数组越界的问题
#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){ int K, i, n, j; int Tab[101][2]; while( cin>>K ) { memset( Tab, 0, sizeof(Tab) ); for( i=0; i<K; i++ ){ cin>>n; Tab[n][1]=1; } for( i=2; i<101; i++ ) { if( Tab[i][1]==1 ){ j=i; while( j!=1 ) { if( j%2==0 ){ j/=2; if( j<101 ){ Tab[j][0]=1; } } else{ j=(j*3+1)/2; if(j<101){ Tab[j][0]=1; } } } } } int ans[101]; for( i=2, j=0; i<101; i++ ) { if( Tab[i][1]==1 && Tab[i][0]==0 ) ans[j++] = i; } sort(ans, ans+j); cout<<ans[--j]; for( i=--j; i>=0; i-- ) cout<<" "<<ans[i]; cout<<endl; } return 0;}
0 0
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- Struts2标签中$,#,%的用法
- Hyper-V 高可用性 (存储配置篇)
- 单链表(创建,打印,逆序,合并两个有序的链表)
- delphi DISQLite3使用例子
- Acdream 1203 KIDx's Triangle(解三角形)
- 1005. 继续(3n+1)猜想 (25)
- 【Unity】技巧集合2
- ParamQuery 的Demo
- php和c通过socket进行通信
- 系统调用和库函数的关系
- UNIX/LINUX使用expect实现人机自动交互功能
- java.util.zip类 ZipInputStream
- [华为机试练习题]25.圆桌游戏
- PHP+MySQL分页原理实现