| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1657 人关注过本帖
标题:六个不同的数和为定值的代码
只看楼主 加入收藏
木1头2人
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-11-3
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
六个不同的数和为定值的代码
求六个不同的数但他们的和为定值的代码
搜索更多相关主题的帖子: 不同 代码 
2018-01-20 15:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:4 
总有个界定吧
2018-01-20 16:50
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:4 
穷举法
2018-01-21 12:34
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
这个曾经在一个企业面试题看过类似的,不同的是6改为n,主要是看算法思想,通常会给出数据范围的~
应该类似于dp动态规划,.对于ACM或者算法行家感觉这应该挺习惯的(我知道思路,不过其中实现细节就没啥去弄了)~
这些建议去看看算法导论(通常被称为"紫书",貌似是给新手用的?但那些"新手"会这题也是很正常的那种)~
就算直接搜到了个代码但不理解也就几乎相当于看看魔术表演就是了这个效果~

我还是来说说"天书"吧~

假设数组元素都是非负数,最多可以有100个元素~
定值和的范围为0-10000(负数可以通过调整指针实现)
那就开一个存放整型的[10000][100]的数组~

2个数的定值和k等于1个数的定值和m加上k-m;
3个数的定值和k等于2个数的定值和m加上k-m;
n个数的定值和k等于n-1个数的定值和m加上k-m;
~

[此贴子已经被作者于2018-1-25 17:39编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-01-25 17:37
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:4 
要用到多重循环,反复循环很多次才可以全部找完代码很长的。
2018-01-27 12:33
nslookup65
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:192
注 册:2017-12-1
收藏
得分:4 
只考虑正数的情况:
程序代码:
#include <stdio.h>

int main()
{
    int num[6], sum, _sum, sn = 0;

    sum = 100;    //测试数

    for (int i = 1; i<sum / 5; i++)
    {
        num[0] = i;
        for (int j = 1; j<sum / 4; j++)
        {
            num[1] = num[0] + j;
            for (int k = 1; k<sum / 3; k++)
            {
                num[2] = num[1] + k;
                for (int m = 1; m<sum / 2; m++)
                {
                    num[3] = num[2] + m;
                    for (int n = 1; n<sum; n++)
                    {
                        num[4] = num[3] + n;
                        for (int o = 1; o<sum; o++)
                        {
                            num[5] = num[4] + o;
                            _sum = num[0] + num[1] + num[2] + num[3] + num[4] + num[5];
                            if (_sum < sum) continue;
                            if (_sum > sum) break;
                            sn++;
                            printf("%d:\t\t%d\t%d\t%d\t%d\t\%d\t%d\n",
                                sn, num[0], num[1], num[2], num[3], num[4], num[5]);
                        }
                    }
                }
            }
        }
    }

    return 0;
}


[此贴子已经被作者于2018-1-27 20:25编辑过]

2018-01-27 14:09
快速回复:六个不同的数和为定值的代码
数据加载中...
 
   



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

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