一天两道PAT(2)1005,1006
2024-09-05 01:00:23
今天的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的,这样做减少了空间,也不失为一种好办法。
最新文章
- TextView跑马灯效果
- Ubuntu主题美化--使用WPS风格
- 【转】为eclipse安装python、shell开发环境和SVN插件
- Perceptron Learning Algorithm (PLA)
- GameMap其他初始化
- 数学之路-分布式计算-disco(4)
- CI 笔记(1)
- iOS更新之DFU模式和恢复模式
- 201521123050 《Java程序设计》第8周学习总结
- linux 常见报错
- jenkins 添加 证书凭证Credentials
- ProDinner
- Directed Graph Loop detection and if not have, path to print all path.
- 8.15jsp document 头部声明 区别
- Differences between page and segment
- Android Actionbar Tab 导航模式
- 使用httpclient对zip格式的响应数据解压
- End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文小结
- makefile之强制目标
- ACM模板~求逆序对的个数
热门文章
- C#_.NetCore_Web项目_EXCEL数据导出(ExcelHelper_第一版)
- SpringBoot集成swagger2.0
- Zabbix-3.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
- 12.2 中的Data Guard Standby 密码文件自动同步 (Doc ID 2307365.1)
- Redhat Linx使用Centos yum源
- 08. Go 语言包(package)
- Office批量打印助手(Excel 批量打印、Word 批量打印)
- [译]Vulkan教程(28)Image视图和采样器
- Windows10安装ubuntu16.04双系统教程