无输出,求高手解答
查看原帖
无输出,求高手解答
245089
i_am_a_joker楼主2022/4/6 13:17
#include<bits/stdc++.h>
using namespace std;
int n,m;
int goal[50];
int s[50][50];
int cur[50];
bool vis[50];
bool dfs(int x, int mx, int last) {
	if (x == mx + 1) {
		for (int i = 1; i <= n; i++) {
			int sum = 0;
			for (int j = 1; j <= mx; j++) sum += s[cur[j]][i];
			cout<<sum<<" ";
			if (sum < goal[i]) return 0;
		}
		printf("%d ", mx);
		for (int i = 1; i <= mx; i++) printf("%d ", cur[i]);
		return 1;
	}
	for (int i = last + 1; i <= m; i++) {
		if (vis[i]) continue;
		vis[i] = 1;
		cur[x] = i;
		if (dfs(x + 1, mx, i)) return 1;
		vis[i] = 0;
	}
	return 0;
}
int main() {
	cin>>n;
	for(int i=1; i<=n; i++) cin>>goal[i];
	cin>>m;
	for(int i=1; i<=m; i++) {
		for(int j=1; j<=n; j++) {
			cin>>s[i][j];
		}
	}
	for(int i=1; i<=m; i++) {
		if(dfs(i,1,0)) break;
	}
	return 0;
}
2022/4/6 13:17
加载中...