qq_38593052 2019-09-09 09:34 采纳率: 0%
浏览 470
已结题

双层循环的判断问题(急!!!)

问题链接:https://projecteuler.net/problem=669
背景:我现在有2个已赋值的一维动态数组a和b,a是存放了N个斐波那契数,b使用了“next permutation”实现了1到N的全排列。

问题:如何找到b中的一组排列,这组排列的**每**相邻两项元素之和等于某一个斐波那契数(即等于a中某个元素),最后输出这组排列。

本人萌新,目前使用两层循环来实现。但是由于第二层循环的判断条件符合就输出了结果,从而导致多输出了许多不符合要求的排列。

do
    {
        for (long i = 2; i < n; i++)
        {
            for (long j = 0; j < n - 1; j++)
            {
                if ((b[j] + b[j + 1]) == a[i])
                {
                    for (long k = 0; k < n; k++)

                        cout << b[k] << "\t";
                    cout <<"K"<< endl;
                }
            }
        }
    } while (next_permutation(b, b + n));

图片说明

  • 写回答

5条回答 默认 最新

  • GentleTK 2019-09-09 09:47
    关注

    有两个疑问。
    1.你的next_permutation(b, b + n)是如何实现的?是保存了每一种排列吗

    2.要输出的排列是你全排列中的一组排列吗?

    我说一下我的想法:在你的第二层循环里,判断条件符合时,continue,不符合就break,跳出第二层循环,进行下一组排列的比对判断。在第二层循环外面,判断j是否是最后一个元素下标,输出这组排列。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料