| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2612 人关注过本帖
标题:请问下算法大神,从一个数组中取其中某些数相加到一定范围,然后再输出
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:4 
本人C新手,数据结构和算法也都才学,所以说错勿怪啊。
数组: 1 2 3 4 5 6 7 8 9 10

区间为:5-10

输出:1+4
      1+5
      1+6
      1+7
      1+8
      1+9
      2+3
      2+4
楼主不妨翻过来想:用区间(5——10)分别减去操作数,得到的数的区间就是要求的,而操作数如果大于区间中最小的数,那么就从1开始。
拿楼主红色部分的输出来说,
5-1=4;10-1=9;所以1+4~9满足条件
5-2=3;10-2=8;所以2+3~8满足条件
。。。。。。
5-6=-1;10-6=4;所以6+1~4满足条件



我就是这样想的

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-31 20:46
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
这是我的代码
程序代码:
#include<stdio.h>
main(){
    int a[10];
    int i,j,c;
    for(i=1;i<10;i++)
        a[i-1]=i;

    for(i=0,c=a[i];i<9;i++,c=a[i])
        for(j=(5-c)>0?(5-c):1;j<=10-c;j++)
            printf("%d+%d\n",c,j);
}
貌似没简化啥

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-31 21:01
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:4 
程序代码:
#include <stdio.h>

int main(void)
{
    int val[10] = {1,2,3,4,5,6,7,8,9,10};    /* 自己定义的数据        */
    int count = 0;
    int i = 0;
    int j = 0;
    int result = 0;

    count = sizeof val/sizeof(val[0]);      /* 计算出数组中的元素个数 */
   
    /* 遍历所有数之和 */
    for(i=0;i<count;i++)
        for(j=i+1;j<count;j++)  /* j = i+1 跳过和自己相加 */
        {
            result = val[i] + val[j];
            if(result >= 5 && result <= 10)
                printf("%d + %d = %2d\n",val[i] ,val[j] ,result);
        }
   
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

I have not failed completely
2013-01-02 10:33
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:4 
以下是引用神龙赖了在2013-1-2 10:33:07的发言:

#include  
 
int main(void)
{
    int val[10] = {1,2,3,4,5,6,7,8,9,10};    /* 自己定义的数据        */
    int count = 0;
    int i = 0;
    int j = 0;
    int result = 0;
 
    count = sizeof val/sizeof(val[0]);      /* 计算出数组中的元素个数 */
   
    /* 遍历所有数之和 */
    for(i=0;i
红色的语句是什么作用? 数组元素个数不就是10个,为什么还要计算?

新手发言,请多指教。
2013-01-02 11:48
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
sizeof val/sizeof(val[0])
有时我们不是测试10个数,或许是4个,或许是5个
这行语句测试出了数组的元素个数,储存在count中,然后浏览所有元素
这样就可以适应元素个数的变化,不需要再更改源代码只用把要计算的数输入数组即可,
说白了就是加强了它的应变能力。。。

I have not failed completely
2013-01-02 12:01
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:4 
支持

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2013-01-02 13:06
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:4 
简单点的两个for循环就行
如果1+2+3也可以,那就用回溯
2013-01-02 13:31
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:4 
for(i=1;i<=9;i++)
{
for(j=1;j<=10-i;j++)
{ sum=i+j;
printf("%d\n",sum);}
}
2013-01-02 14:54
qianyou
Rank: 3Rank: 3
来 自:江西南昌
等 级:论坛游侠
帖 子:76
专家分:189
注 册:2011-3-25
收藏
得分:0 
回复 8楼 你不想去那儿
其实我需要的是不一定只有两个数相加,也可以是三个数,四个数,只要是里面有的数字相加能在那区域范围就可以。这只是两个数,做不到我想要的要求。
2013-01-03 15:43
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
回复 15楼 神龙赖了
真周到啊,呵呵,受教了

新手发言,请多指教。
2013-01-04 23:37
快速回复:请问下算法大神,从一个数组中取其中某些数相加到一定范围,然后再输出 ...
数据加载中...
 
   



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

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