今天的pat1006没什么好说的。就记录一下1005的状况。先上题目。

卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。

当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数 n 为“关键数”,如果 n 不能被数列中的其他数字所覆盖。

现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。

输入格式:

每个测试输入包含 1 个测试用例,第 1 行给出一个正整数 K (<100),第 2 行给出 K 个互不相同的待验证的正整数 n (1<n≤100)的值,数字间用空格隔开。

输出格式:

每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用 1 个空格隔开,但一行中最后一个数字后没有空格。

输入样例:

6
3 5 6 7 8 11

输出样例:

7 6

再上我的代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int *p;
p = new int[n];
for(int i=0;i<n;i++)
{
cin>>p[i];
}
int k;
int *flag;
flag = new int[n];
for(int i=0;i<n;i++)
{
flag[i] = 0;
}
for(int i=0;i<n;i++)
{
k = p[i];
while(k!=1)
{
if(k%2==0)
{
k/=2;
}
else
{
k = 3*k+1;
k/=2;
}
for(int j=0;j<n;j++)
{
if(p[j]==k)
{
flag[j] = 1;
}
}
}
}
int num=0;
int answer[100];
for(int i=0;i<n;i++)
{
if(flag[i]==0)
{
answer[num] = p[i];
num++;
}
}
int mpos;
for(int i=0;i<num;i++)
{
mpos=i;
for(int j=i;j<num;j++)
{
if(answer[j]>answer[mpos])
{
mpos = j;
}
}
int temp;
temp = answer[i];
answer[i] = answer[mpos];
answer[mpos] = temp;
}
cout<<answer[0];
for(int i=1;i<num;i++)
{
cout<<" "<<answer[i];
}
delete []p;
delete []flag;
}

今天这道题,做完下来和大神的答案对比下来,思路基本上差不多。值得学习改进的地方在于,排序函数可以写成子函数,在主函数里调用,这样以后遇到较为复杂的题目能够更清楚。

还有就是关于answer数组的选择,看了一些别人的代码,他们都没有最后的answer数组,都是先判定是否被覆盖,一旦被覆盖,直接把该数据在原来的p里清空,最后直接排p的,这样做减少了空间,也不失为一种好办法。

最新文章

  1. TextView跑马灯效果
  2. Ubuntu主题美化--使用WPS风格
  3. 【转】为eclipse安装python、shell开发环境和SVN插件
  4. Perceptron Learning Algorithm (PLA)
  5. GameMap其他初始化
  6. 数学之路-分布式计算-disco(4)
  7. CI 笔记(1)
  8. iOS更新之DFU模式和恢复模式
  9. 201521123050 《Java程序设计》第8周学习总结
  10. linux 常见报错
  11. jenkins 添加 证书凭证Credentials
  12. ProDinner
  13. Directed Graph Loop detection and if not have, path to print all path.
  14. 8.15jsp document 头部声明 区别
  15. Differences between page and segment
  16. Android Actionbar Tab 导航模式
  17. 使用httpclient对zip格式的响应数据解压
  18. End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文小结
  19. makefile之强制目标
  20. ACM模板~求逆序对的个数

热门文章

  1. C#_.NetCore_Web项目_EXCEL数据导出(ExcelHelper_第一版)
  2. SpringBoot集成swagger2.0
  3. Zabbix-3.4简介及安装配置
  4. mysql初始化/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
  5. 12.2 中的Data Guard Standby 密码文件自动同步 (Doc ID 2307365.1)
  6. Redhat Linx使用Centos yum源
  7. 08. Go 语言包(package)
  8. Office批量打印助手(Excel 批量打印、Word 批量打印)
  9. [译]Vulkan教程(28)Image视图和采样器
  10. Windows10安装ubuntu16.04双系统教程