2 u013388899 u013388899 于 2014.01.05 20:02 提问

1到9组成3个三位数,每个数字恰好使用一次,要求3个数的比满足1:2:3,然后输出。

1到9组成3个三位数,每个数字恰好使用一次,要求3个数的比满足1:2:3,然后输出。这个怎么入手?

3个回答

DoctorCZM
DoctorCZM   2014.01.08 21:48

经过分析发现,这三个数的中最小的那个数的百位只能在(1, 2, 3)中取,然后从利用暴力法求出第一个数a1,将a1*2、a1*3算出,是否有重复数字,有重复,直接下一组数。
如下伪代码:
for(int i = 1; i <= 3; ++ i)
{
for(int j = 1; j <= 9; ++ j)
{
if(i == j) continue;
for(int k = 1; k <= 9; ++ k)
{
if(k == i || k == j) continue;
a1 = 100*i + 10*j +k;
a2 = 2*a1;
a3 = 3*a1;
//判断a1, a2, a3是否有重复数字,若无则为所求
}
}
}
以上办法是笨了点,希望对您有帮助!

DoctorCZM
DoctorCZM 这样的确缩小的范围,另外一个问题是,接下来怎么做,如果的是从123到329进行循环,然后再扩大2、3倍,再求三个数中没有相同的数字,这想法是不错的。
4 年多之前 回复
mugua521
mugua521 最小数123,最大数987/3=329,范围是不是更小了,是不是可以更快速一点找到3个数
4 年多之前 回复
u013316504
u013316504   2014.01.05 20:25

其实这种问题有个好办法,那就是暴力法,
虽然看起来不高端,但绝对好用,而且时间复杂度也不高。

可否明白?

A8765498135498432789
A8765498135498432789   2014.01.06 14:46

这种问题 你百度下 代码不就有了吗。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[ACM] 用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。
方法一 //用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。   #include    void result(int num, int &result_add, int &result_mul) {     int i, j, k;       
1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解。
很多时候要注意思考
用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有解
C#学习中
用1,2,3...9组成3个三位数abc, def, ghi, 每个数字恰好使用一次,且abc:def:ghi=1:2:3,输出所有解。
用1,2,3...9组成3个三位数abc, def, ghi, 每个数字恰好使用一次,且abc:def:ghi=1:2:3,输出所有解。
排列(permutation):用1,2,3,...,9组成3个三位数abc, def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。提示:不必太动脑筋。
习题2-10 排列(permutation)用1,2,3,...,9组成3个三位数abc, def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。提示:不必太动脑筋。#include //分解三位数,数组相应位置值加一 int fun(int t[],int i) { t[i/100]++; t[(i % 100)/10]++; t[i % 10]
1~9分成1:2:3的三个3位数
将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍。 问题中的三个数之间是有数学关系的,实际上只要确定第一个三位数就可解决问题。试探第一个三位数后,计算出另外两个数,将其分别分解成三位数字,进行判断后确定所 试探的数是否就是答案。 需要提醒的是:试探的初值可以是123,最大值是333。因为不可能超出该范围。 #include typede
用C++将1,2...9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例
这需要用到排列组合算法 下面是我编写且能实现的代码 #include <iostream> using namespace std;class Permutation { public: void Perm(int a[],int k,int n); //将数字进行全排列 void PermOfThree(int a[]);
C语言-将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
#include #include #include int IsTheOne(int,int,int); int cmp(const void *a,const void *b); int main() { int i,j,k; int first,second,third; for(first=123;first<334;first++){ second
排列,1到9组成三个三位数,使三个数比值为1:2:3(C++)
题目要求: 用1,2,3,...,9组成3个三位数abc,def,ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解。 思路: 这道题不难,关键在于怎么判断是否每个数字使用一次。由于自己没想出好的办法,看到别人好的思路就想mark下来。 1. 要求1~9这9个数字都使用且只能使用一次,所以想到用循环,对每3个三位数组
用1~9的9个数字组成三个三位数,成1:2:3的比例
#include bool is_ok(int a[]) {     if (a[0])         return false;     for (int i = 1; i     {         if (a[i] != 1)             return false;     }     return true; } void prin