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~

  • 相关阅读:
    response输出随机图片、定时刷新网页
    @Transactional注解使用心得
    mybatis缓存(一,二级别)
    数据库四大特性及数据库隔离级别
    mybatis @SelectKey加于不加的区别
    MYSQL索引类型+索引方法
    页面缓存例子
    概率生成模型超越神经网络
    生成学习
    过程量与状态量
  • 原文地址:https://www.cnblogs.com/Breathmint/p/7207856.html
Copyright © 2011-2022 走看看