#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
class caixiang
{
public:
vector<int> m_allnum;
};
int main()
{
int i, j, k, m, n;
cin >> i;
//用于存储最后输出的值
vector<int> final;
caixiang* a = new caixiang[i];
bool ZT = false;
//数组b用于记录输入,并用于输入到final容器中
int* b = new int[i];
for (j = 0; j < i; j++)
{
cin >> m;
b[j] = m;
while (m != 1)
{
if (m % 2 == 0)
{
m = m / 2;
a[j].m_allnum.push_back(m);
}
else
{
m = (3 * m + 1) / 2;
a[j].m_allnum.push_back(m);
}
}
//如果b数组里面出现了1,那么把1加入
}
//到这里所有输入的数都存到了b数组中
//b[0]对应的数按题目方法计算到最后的1
//中间的数(包括1)都存到了a[0].m_allnum这个容器中
for (j = 0; j < i; j++)//数组b的循环,从b[0]到b[i-1]
{
for (k = 0; k < j; k++)
{
for (n = 0; n < (a[k].m_allnum.size()); n++)
{
if (b[j] == a[k].m_allnum[n])
{
ZT = true;
}
}
}
for (k = j + 1; k < i; k++)
{
for (n = 0; n < (a[k].m_allnum.size()); n++)
{
if (b[j] == a[k].m_allnum[n])
{
ZT = true;
}
}
}
if ((ZT == false) && (b[j] != 1))
{
final.push_back(b[j]);
}
ZT = false;
}
//下面对final容器进行排序
int temp;
for (j = 0; j < final.size(); j++)
{
for (k = j + 1; k < final.size(); k++)
{
if (final[j] < final[k])
{
temp = final[j];
final[j] = final[k];
final[k] = temp;
}
}
}
for (j = 0; j < final.size() - 1; j++)
{
cout << final[j] << " ";
}
cout << final[final.size() - 1];
return 0;
}
PAT乙级1005---涉及到排序
最新推荐文章于 2024-07-21 22:06:29 发布