码迷,mamicode.com
首页 > 编程语言 > 详细

排列 (C++实现)

时间:2017-07-19 23:22:15      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:数字   计算   ++   return   class   不能   c++实现   结果   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~

排列 (C++实现)

标签:数字   计算   ++   return   class   不能   c++实现   结果   c++   

原文地址:http://www.cnblogs.com/Breathmint/p/7207856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!