大家好啊,这里是Cyber Striver的博客。今天我继续为大家带来PAT乙级的题解。
目录
题目
题解
【2022-5-20】 WR:部分正确22/25
#include <stdio.h>
void sort(int* a, int length) //冒泡排序
{
int i, t, j;
for (i = 0; i < length - 1; i++)
{
for (j = 0; j < length - i - 1; j++)
{
if (a[i]>a[i + 1])
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
}
int is_nes(int n, int *a,int count) //判断是否为关键数的函数
{
int i = 0;
for (i = 0; i < count-1; i++)
{
if (n == a[i])
return 0;
}
return 1;
}
int main()
{
int n = 0,i=0,j=0,count=0;
scanf("%d", &n);
int a[10000],ret=0;
int copy[10000];
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n; i++)
copy[i] = a[i];
int sec[10000];
int nes[10000];
for (i = 0; i < n; )
{
if (a[i] % 2 == 0)
{
sec[count] = a[i] / 2;
count++;
a[i] = a[i] / 2;
}
else
{
sec[count] = (3 * a[i]+1) / 2;
count++;
a[i] = (3 * a[i] + 1) / 2;
}
if (a[i] == 2)
i++;
}
for (i = 0; i < n; i++)
{
ret = 0;
ret = is_nes(copy[i], sec, count);
if (ret == 1)
{
nes[j] = copy[i];
j++;
}
}
sort(nes, j);
for (j--; j>=0; j--)
{
if (j!=0)
printf("%d ", nes[j]);
else
printf("%d\n", nes[j]);
}
return 0;
}
思路
经验总结
本次博客到这里就结束了,如果你觉得我的文章还不错的话,请给我多多点赞评论哦!