70pts(字典序问题)求调
查看原帖
70pts(字典序问题)求调
1047598
GZXUEXUE楼主2024/11/23 12:01

rt。发现是字典序的问题 (但不会改 ,求调

# include <iostream>
using namespace std;
int n,m,mac[20],g[20][20],dp[20];
void dfs(int idx,int sum,int ma){
	if (ma > m) return;
	if (sum == dp[m]){
		for (int i = 1;i <= n;i++) cout << i << " " << mac[i] << endl;
		exit(0);
	}if (idx > n) return;
	for (int i = 0;i <= m;i++) mac[idx] = i,dfs(idx + 1,sum + g[idx][i],ma + i);
}int main(){
	cin >> n >> m;
	for (int i = 1;i <= n;i++){
		for (int j = 1;j <= m;j++) cin >> g[i][j];
	}for (int i = 1;i <= n;i++){
		for (int j = m;j >= 0;j--){
			for (int k = 0;k <= j;k++) dp[j] = max(dp[j],dp[j-k]+g[i][k]); // same -> last
		}
	}cout << dp[m] << endl;
	dfs(1,0,0);
	return 0;
}
2024/11/23 12:01
加载中...