程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> BYSBZ 2748(音量調節-01背包)

BYSBZ 2748(音量調節-01背包)

編輯:C++入門知識

一定要讀題啊!!
這題說的是——每次一定換,沒說前後不能到一個音量。

[cpp] 
#include<cstdio> 
#include<cstring> 
#include<queue> 
#include<cmath> 
#include<cstdlib> 
#include<iostream> 
#include<functional> 
#include<algorithm> 
#include<stack> 
using namespace std; 
#define MAXN  (50 + 10) 
#define MAXMAXLEVEL (1000+1) 
int n,start,maxlevel,a[MAXN]; 
bool f[MAXN][MAXMAXLEVEL]; 
int main() 

//  freopen("changingsounds.in","r",stdin); 
//  freopen("changingsounds.out","w",stdout); 
      
    memset(f,0,sizeof(f)); 
  
    scanf("%d%d%d",&n,&start,&maxlevel); 
    for (int i=1;i<=n;i++) scanf("%d",&a[i]); 
    f[0][start]=1; 
    for (int i=1;i<=n;i++) 
        for (int j=0;j<=maxlevel;j++) 
        { 
            f[i][j]=j-a[i]>=0? f[i-1][j-a[i]] : 0; 
            f[i][j]=j+a[i]<=maxlevel? f[i-1][j+a[i]]||f[i][j] : f[i][j]; 
              
          
              
        } 
    int ans=maxlevel; 
    while (ans>=0&&!f[n][ans]) ans--; 
    cout<<ans<<endl; 
  
  
  
      
//  while (1); 
    return 0; 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved