sicily 1146 采药

来源:互联网 发布:守望先锋优化太差 编辑:程序博客网 时间:2024/05/20 07:52

对动态规划不懂,借此记住

01背包问题

虽然是入门级,但是也做了好久~

#include <iostream>using namespace std;int drug[ 102 ][ 1002 ];int main(){int time, size, i;int t[ 101 ], v[ 101 ];cin >> time >> size;for( i = 0; i < size; i++ )cin >> t[ i ] >> v[ i ];for( i = 0; i <= time; i++ )      // 点之后的都为0drug[ size ][ i ] = 0;int j;for( i = size - 1; i >= 0; i-- )  // 遍历所有点{for( j = 0; j <= time; j++ )  // 遍历所有可能剩余空间{if( j < t[ i ] )          // 当剩余空间不支持添加当前点drug[ i ][ j ] = drug[ i + 1 ][ j ];else                      // 当剩余空间足够大可以支持当前点{                        if( drug[ i + 1 ][ j ] < drug[ i + 1 ][ j - t[ i ] ] + v[ i ] )  // 如果加上该点后能比原来的大drug[ i ][ j ] = drug[ i + 1 ][ j - t[ i ] ] + v[ i ];elsedrug[ i ][ j ] = drug[ i + 1 ][ j ];}}}int max;max = 0;for( i = 0; i <= time; i++ )if( drug[ 0 ][ i ] > max )max = drug[ 0 ][ i ];cout << max << endl;return 0;}




原创粉丝点击