此題 為01揹包,可以把最大金額當做揹包容量,然後把發票的金額當做揹包的容量和價值;則成了簡單的01揹包;
我做此題,錯了n次,究其原因我是把p>60000寫成了p>100000;
#include
#include
#include
#include
#include
using namespace std;
#define maxn 7777777+10
int p[90];
double q;
int n;
int m;
int dp[maxn];
bool flag;
int main()
if(sum>100000)
flag=true;
if(flag)
continue;
for(j=num;j>=sum;j--)
dp[j]=max(dp[j],dp[j-sum]+sum);
}printf("%d.%02d\n",dp[num]/100,dp[num]%100);
}return 0;
}
hdu 1864最大報銷額 01揹包
當成0 1揹包來做的 思路,先轉化成整數,擴大100倍,首先刪除不符合條件的,然後01揹包 提交情況 memory limit exceed 1次,一開始擴大了1000倍,不過我感覺還是應該擴大1000倍。收穫 printf 0.2lf n double dp int all 100 100 中如果...
01揹包 HDU 1864 最大報銷額
轉化為整數擴大100倍處理 為賦值抑制字元,表示本輸入項對應的資料 讀入後,不賦給相應的變數 如 scanf 2d 2d 3d a,b printf d n d n a,b 輸入123456789 則系統將讀取12並賦給a 讀取34但捨掉 讀取567並賦給b 所以a 12 b 567 處理好輸入後,...
HDU 1864 最大報銷額(01揹包)
思路 01揹包 只有abc類能報銷,有別的種類也不能報銷,單類的物品不能超過600,超過也不能報銷,擴大100倍算的,直接小數有點麻煩,主要思想是tianyi cui大神寫的揹包九講,本部落格演算法精講類有,寫一下我認為最難的吧,就是用一維陣列做01揹包,揹包的容量是從大到小迴圈的,之所以這樣做就是...