zoukankan      html  css  js  c++  java
  • 排列 (C++实现)

    题目来自刘汝佳编著的《算法竞赛入门经典(第二版)》

    题目:
    用1,2,3,...,9 组成 3 个三位数 abc,def 和 ghi,每个数字恰好使用一次,要求 abc:def:ghi = 1:2:3。按照“abc def ghi“的格式输出所有解,每行一个解。

    暴力破解:

    #include<iostream>
    #include<time.h>
    using namespace std;
    int main() {
        clock_t start, end;
        int i, note = 0, a, b, c;
        start = clock();
        for (i = 123; i <= 329; i++) {
            if (i / 100 != i / 10 % 10 && i / 100 != i % 10 && i / 10 % 10 != i % 10)
                if (i * 2 / 100 != i * 2 / 10 % 10 && i * 2 / 100 != i * 2 % 10 && i * 2 / 10 % 10 != i * 2 % 10 && i * 2 < 999)
                    if (i * 3 / 100 != i * 3 / 10 % 10 && i * 3 / 100 != i * 3 % 10 && i * 3 / 10 % 10 != i * 3 % 10 && i * 3 < 999)
                        if (i / 100 + i / 10 % 10 + i % 10 + i * 2 / 100 + i * 2 / 10 % 10 + i * 2 % 10 + i * 3 / 100 + i * 3 / 10 % 10 + i * 3 % 10 == 45 &&
                            (i / 100) * (i / 10 % 10) * (i % 10) * (i * 2 / 100) * (i * 2 / 10 % 10) * (i * 2 % 10) * (i * 3 / 100) * (i * 3 / 10 % 10) * (i * 3 % 10) == 362880)
                            cout << i << " " << i * 2 << " " << i * 3 << endl;
        }    
        end = clock();
        cout << "time is " << end - start << endl;
        return 0;
    }

    结果:

    192 384 576

    219 438 657

    273 546 819

    327 654 981

     

    实在想不到好的方法,就暴力破了,如果是精简算法的话时间应该还可以减少,我在代码段里加入了时间计算,9ms,求各路大神看看能不能有更好的算法~QAQ~

  • 相关阅读:
    20209/29
    2020/9/30
    2020/10/1
    ATM测试总结报告
    20201020 千锤百炼软工人
    20201024 千锤百炼软工人
    20201025 千锤百炼软工人
    20201023 千锤百炼软工人
    20201018 千锤百炼软工人
    20201022 千锤百炼软工人
  • 原文地址:https://www.cnblogs.com/Breathmint/p/7207856.html
Copyright © 2011-2022 走看看