不知道哪里错了输出0,求助!!!急急急!!!
查看原帖
不知道哪里错了输出0,求助!!!急急急!!!
291489
xiexie楼主2021/2/2 20:06
#include<bits/stdc++.h>
using namespace std;int n;
int a[1001] , b[1001][1001] , vis[1001] , len = 0 , d[1001] , ans[1001] , ans1[1001];
bool check(int x)
{
	 memset(ans , 0 , sizeof(ans));
	for(int i = 1 ;i <= len;i++)
	{
		for(int j = 1 ;j <= n;j++)
			ans[j] += b[d[i]][j];
	}
	for(int i = 1 ;i <= n;i++)
		if(ans[i] < a[i])
			return false;
	return true;
}
int minn = 0;	int m ;
void dfs(int step , int x)
{
	if(step > m)
	{
		if(check(len))
		{
			if(minn > len)
			{
				minn = len;
				for(int i = 1 ;i <= len;i++)
					ans1[i] = d[i];
			}	
		}
		return; 
	}
	for(int i = x ;i <= m;i++)
	{
		if(vis[i] == 0)
		{
			len++;
			d[len] = i;
			vis[i] = 1;
			dfs(step + 1 , i);
			d[len] = 0;
			len--;
			vis[i] = 0;
		}
	}
}
int main()
{
	
	cin >> n;
	for(int i = 1 ;i <= n;i++)
		cin >> a[i]; 

	cin >> m;
	for(int i = 1 ;i <= m;i++)
		for(int j = 1 ;j <= n;j++)
			cin >> b[i][j];
	dfs(1 , 1);
	cout << minn;
	for(int i = 1 ;i <= minn;i++)
		cout << ans1[i];
return 0;
}

2021/2/2 20:06
加载中...