| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1111 人关注过本帖
标题:怎么用1-9个随机组成三个三位数
只看楼主 加入收藏
liyichen
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2015-8-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:1 
怎么用1-9个随机组成三个三位数
题目:用1、2、3…9组成三个三位数:abc、def、ghi,每个数字恰好被使用了一次,要求abc:def:ghi=1:2:3.输出所有解。

想问一下各路大神,用这九个数字随机组成3个3位数的算法,有没有简单一点的?我写的每次都是有很多循环和嵌套,运行效率非常低。
2015-08-25 10:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
最笨的方法:abc 最小为123,最大为329,然后一个个的试验

程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned abc=123; abc<=329; ++abc )
    {
        unsigned def = abc*2;
        unsigned ghi = abc*3;

        unsigned mark = 0;
        mark |= 1u<<(abc/1%10);
        mark |= 1u<<(abc/10%10);
        mark |= 1u<<(abc/100%10);
        mark |= 1u<<(def/1%10);
        mark |= 1u<<(def/10%10);
        mark |= 1u<<(def/100%10);
        mark |= 1u<<(ghi/1%10);
        mark |= 1u<<(ghi/10%10);
        mark |= 1u<<(ghi/100%10);

        if( mark == 0x3FE ) // binary: 1111111110
            printf( "%u:%u:%u\n", abc, def, ghi );
    }

    return 0;
}

192:384:576
219:438:657
273:546:819
327:654:981

2015-08-25 11:04
快速回复:怎么用1-9个随机组成三个三位数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034794 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved