标题:关于题目的重复问题
取消只看楼主
随行丨
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-10-7
结帖率:66.67%
已结贴  问题点数:20 回复次数:2 
关于题目的重复问题
□□□+□□□=□□□。将数字1~9分别填入9个□中,使等式成立,且每个数字只能使用一次。例如173+286=459就是一个正确的组合,请问有多少种这样的组合?
 要求: (1).将所有可能的组合以等式的格式打印出来,每个占⼀一⾏行行。
         (2).打印出可能组合的个数
#include<stdio.h>
int judge(int a, int b, int c)                   //若9个数之和为45,积为9!(362880) ,则不重复
{
    char tmp_buf[9];
    int sum=0;
    int multiply=1;
   
    sprintf(tmp_buf, "%d%d%d", a, b, c);          //将9个数写入数组
    for(int i=0; i<9; i++)
    {
        sum += (tmp_buf[i]-'0');
        multiply *= (tmp_buf[i]-'0');
    }
    if(sum==45&&multiply==362880)                  //满足条件返回1,即为真
        return 1;
    else
        return 0;
}

int main()
{
    int i, j, k, count=0;
    for(i=123; i<=864; i++)                          //穷举法求满足情况 ,123+864=987
    {
        for(j=123; j>=864; j++)
        {
            for(k=267; k<=987; k++)
            {
                if(judge(i,j,k))
                    if(i+j==k)
                        {
                            printf("%d+%d=%d\n", i, j, k);     //打印等式
                            count++;                             //统计个数
                        }
            }
        }
    }
    printf("%d\n", count);
   
    return 0;
}

现在的问题是,这样会出现重复,如173+286=459,则必定会出现286+173=459,
请问有没有什么可能避免这种重复
万分感谢!
   
搜索更多相关主题的帖子: 重复 个数 组合 int for 
2017-12-09 09:58
随行丨
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-10-7
得分:0 
回复 3楼 yangfrancis
谢谢!
2017-12-09 16:43
随行丨
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-10-7
得分:0 
回复 2楼 九转星河
好的,我会去看看的!
2017-12-09 16:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483245-1-1.html




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

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