T丿X 2021-08-11 16:59 采纳率: 0%
浏览 34

##1005 继续(3n+1)猜想 为啥只有第一个测试点过了

代码:


#include <iostream>
using namespace std;
int main()
{
    int n,a;
    cin >> n;
    int arr[100] = { 0 };
    int arr1[100] = { 0 };
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
        if (arr[i] >= 1 && arr[i] <= 100)
        {
            arr1[i] = arr[i];
        }
        else
            arr1[i] = 1;
    }
    for (int i = 0; i < n && arr[i] != 1; i++)
    {
            if (arr[i] % 2 == 1)
                arr[i] = (3 * arr[i] + 1) / 2;
            else
                arr[i] = arr[i] / 2;
            for (int j = 0; j < n; j++)
            {
                if (arr[i] == arr1[j])
                    arr1[j] = 1;
            }
    }
    for (int i = 0; i < n-1; i++)
    {
        for (int j = i+1; j < n; j++)
        {
            if (arr1[i] < arr1[j])
            {
                a = arr1[i];
                arr1[i] = arr1[j];
                arr1[j] = a;
            }
        }
    }
    cout << arr1[0];
    for (int i = 1; i < n; i++)
    {
        if (arr1[i] != 1)
            cout << ' ' << arr1[i];
    }
    return 0;
}

测试结果:只有第一个测试点过了

img

  • 写回答

2条回答 默认 最新

  • 黑马星云 2021-08-11 19:36
    关注

    题呢?

    评论

报告相同问题?

问题事件

  • 创建了问题 8月11日