| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7364 人关注过本帖, 7 人收藏
标题:出一个简单的算法题, 测测论坛的整体水平
只看楼主 加入收藏
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
收藏
得分:0 
学习学习。
2011-01-21 16:02
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用StarWing83在2011-1-3 21:05:00的发言:

楼上想说明有公式么?据说背包问题不是P问题哦……另外,这里的解法涉及到了复数的集合运算。估计比一元二次方程要复杂好几个数量级呢,要算出来估计得靠matlab
答案是对的, 刚回想一下还以为你写错了,
原来是内外层循环写反了。

我就是真命天子,顺我者生,逆我者死!
2011-05-06 21:43
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用pangding在2011-1-4 19:44:49的发言:

收藏一下这个帖子吧,有机会研究研究。
这题很经典的,跟那个fibonacci数列一样的, 只是稍微麻烦一点点,
不知你研究出来了没有?

[ 本帖最后由 BlueGuy 于 2011-5-6 21:55 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-05-06 21:54
没有注册过的
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:22
专家分:42
注 册:2011-4-16
收藏
得分:0 
都是天才啊~!

就是想学~!
2011-05-07 12:53
xiangqiu1986
Rank: 2
等 级:论坛游民
帖 子:79
专家分:95
注 册:2011-5-5
收藏
得分:0 
学习中,顶一下!

学无止境!
2011-05-07 15:51
Rain_TinG
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-5-4
收藏
得分:0 
学习学习 看懂一部分 数组迷糊
2011-05-07 16:13
saisheng
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-5-7
收藏
得分:0 
厉害
2011-05-07 20:47
夜叶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:189
注 册:2011-5-7
收藏
得分:0 
顶顶
感觉直接用循环感觉比较麻烦,效率不高,还在思考…
2011-05-07 21:18
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
收藏
得分:0 
回复 2楼 醉酒大哥
我想说,你这个只能针对他题目举得例子,不能通用。。。
个人觉得要用 struct 结构体做
2011-05-07 21:40
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:0 
自己写的,希望高手指点
程序代码:
#include<stdio.h>
#define M 17
#define N 5
void main()
{
    int ob[N]={3,4,7,8,9};
    int bag=M;
    int bag_ob[100][100]={0};
    int sum[10]={0};
    int i=0,j=0,temp=0,k=0;
    printf("所有可能的运法\n");
    for(i=N-1;i>=0;i--,k++)
    {
        temp=i;


        while(bag>0&&i>=0)
        {
          if(bag>=ob[i])
          {
                bag-=ob[i];
                bag_ob[k][j]=ob[i];
                j++;
          }
          else
          {
                i--;
          }
        }
        i=0;


       while(i<j)
       {
           printf("%d ",bag_ob[k][i]);
           i++;
       }


       printf("\n");
       j=0;
       i=temp;
       bag=M;

    }
    for(i=0;i<k;i++)
    {
        for(j=0;j<100;j++)
        {
            sum[i]+=bag_ob[i][j];
        }
    }
    int max=sum[0];
    for(i=1;i<k;i++)
    {
        if(sum[i]>=max)
        {
            max=sum[i];
        }

    }
    printf("最优运法\n");
    for(i=0;i<k;i++)
    {
        if(sum[i]==max)
        {
                j=0;
          while(bag_ob[i][j]>0)
            {
                printf("%d ",bag_ob[i][j]);
                j++;
            }
        
                printf("\n");
        }
    
    }



}

--------将学到的东西为我所用,这才是学习的目的 --------
2011-05-07 23:24
快速回复:出一个简单的算法题, 测测论坛的整体水平
数据加载中...
 
   



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

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