为生存而奔跑

   :: 首页 :: 联系 :: 聚合  :: 管理
  271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

留言簿(5)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 319838
  • 排名 - 75

最新评论

阅读排行榜

评论排行榜

#include <iostream>
#include 
<algorithm>
#include 
<vector>
#include 
<string>
using namespace std;
const int maxsize=100;
int n,S;
bool visit[maxsize];
int w[maxsize];
int q[maxsize];
int beibao()
{
    
int top=-1,begin=0,sum=0;
    
int i;
    
while(top!=-2)
    {
        
for(i=begin;i<n;i++)
        {
            
if(!visit[i] && w[i]+sum<=S)
            {
                sum
+=w[i];
                q[
++top]=i;
                begin
=0;
                visit[i]
=1;
                
if(sum==S) return top;
                
break;
            }
        }
        
if(i==n)
        {
            visit[q[top]]
=0;
            sum
-=w[q[top]];
            begin
=q[top]+1;
            top
--;
        }
    }
}
int main()
{
    cin
>>n>>S;
    
for(int i=0;i<n;i++)
    {
        cin
>>w[i];
        visit[i]
=0;
    }
    
int t=beibao();
    
if(t!=-1)
    {
        
for(int i=0;i<=t;i++)
            cout
<<w[q[i]]<<" ";
        cout
<<endl;
    }
    
else cout<<-1<<endl;
}

posted on 2009-10-24 16:10 baby-fly 阅读(1704) 评论(0)  编辑 收藏 引用 所属分类: Algorithm

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理