4枚來自各個星球的硬幣,需要請你幫她盤算一下,是否可能精確湊出要付的款額。
輸入樣例1:
8 9輸出樣例1:5 9 8 7 2 3 4 1
1 3 5輸入樣例2:
4 8輸出樣例2:7 2 4 3
no solutionps :及判斷是否能夠裝滿揹包,能的話輸出裝的物品的價值序列。我們可以用乙個pre記錄當前狀態由那個轉移而來,另乙個記錄當前狀態的價值。
(揹包&路徑記錄)
#include#include#include#include#include#include#include#include#define ll int
#define inf 0x3f3f3f3f
#define eps 1e-8
#include#define ls l,mid,rt<<1
#define rs mid+1,r,rt<<1|1
#define ll __int64
using namespace std;
int arr[10100],dp[10100],val[10100],pre[10100];
void dfs(int u)
dfs(pre[u]);
printf(" %d",val[u]);
}int main()
sort(arr,arr+n);
memset(dp,-inf,sizeof(dp));
memset(pre,-1,sizeof(pre));
dp[0] = 0;
for(i = 0;i < n;++ i)}}
if(dp[m]>0)
else
puts("no solution");
}return 0;
}
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define ll long long
const int inf=0x3f3f3f3f;
int a[10005];
int n,m,ans[10005];
int flag,cnt;
void dfs(int k,int sum1,int sum2)
if(sum1+sum2=n) return;
if(sum1+a[k]<=m)
dfs(k+1,sum1,sum2-a[k]);
if(flag) return ;
}else return ;
}int main()
else printf("no solution\n");
}return 0;
}
L3 001 湊零錢 (揹包輸出路徑)
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越輸入格式 輸入第一行給出兩個正整數 n 104 是硬幣的總個數,m 102 是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v1...
L3 001 湊零錢 (01揹包)
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 輸入格式 輸入第一行給出兩個正整數 n 104 是硬幣的總個數,m 102 是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v...
L3 001 湊零錢(揹包dp,輸出路徑)
輸入格式 輸入第一行給出兩個正整數 n 104 是硬幣的總個數,m 102 是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v1 v2 vk,滿足條件 v1 v2 vk m。數字間以1個空格分隔,行首尾不得有多餘空格。若解不唯一,則輸出最小序列...