标题:关于题目的重复问题
只看楼主
随行丨
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-10-7
结帖率:66.67%
已结贴  问题点数:20 回复次数:4 
关于题目的重复问题
□□□+□□□=□□□。将数字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: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:10 
简单省事的方法……其实可以搜搜看看全排列算法,那样才9!种情况,不会重复的话你开一个1000大小的数组记录有没有重复出现就可以了~

PS:如果证明确认其中一个三位数只有唯一解的话,简单一点规定第一个三位数一定要大于(小于)第二个三位数~

[此贴子已经被作者于2017-12-9 11:17编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-12-09 10:50
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:10 
回复 楼主 随行丨
里面的for循环从j=i+1开始搜不会重
2017-12-09 14:52
随行丨
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.285148 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved