这份代码咋回事
查看原帖
这份代码咋回事
990387
Leo11楼主2024/3/6 21:17
#include<bits/stdc++.h>  
using namespace std;
const int N = 26;
int n, m, p, cnt = 0, minn = 10001, v[N], ans[N], c[N], a[N][N];
bool check()
{
    for(int i = 1; i <= n; i++)
	{
		if(v[i] > 0)
		{
			return 0;
		}
	} 
    return 1; 
}
int get()
{
    if(p < minn)
    {
        cnt = 0;
        minn = p;
        for(int i = 1; i <= m; i++)
        {
	        if(c[i] == 1)
	        {
	            ans[++cnt] = i;
	        }
		}
    } 
}
void dfs(int x)
{
    if(check())
    {
		get();
		return;
	}
    if(x > m) 
    {
		return;
	} 
    for(int i = 1; i <= n; i++)
    {
        v[i] -= a[x][i];
    }
    c[x] = 1;
    p++; 
    dfs(x + 1); 
    for(int i = 1; i <= n; i++)
    {
        v[i] += a[x][i]; 
    }
    c[x] = 0;
    p--; 
    dfs(x + 1); 
}
int main() 
{
    cin >> n;
    for(int i = 1; i <= n; i++)
	{
		cin >> v[i];
	}
    cin >> m;
    for(int i = 1; i <= m; i++)
    {
    	for(int j = 1; j <= n; j++)
        {
        	cin >> a[i][j];
		}
	}
    dfs(1);
    cout << minn << " ";
    for(int i = 1; i <= minn; i++)
    {
    	cout << ans[i] << " ";
	}
}

为什么开了 O2O2 00 分,关掉就是 ACAC ?

2024/3/6 21:17
加载中...