MLE了一个点,求助
查看原帖
MLE了一个点,求助
370121
Zlylovecoding楼主2021/7/9 20:00

求求大佬救救我!!!

#include<bits/stdc++.h>
using namespace std;
const int maxn=30;

struct u{
	int V[26],sum;
	bool R[16];
}st;//V是该状态各种维生素已有量;R记录用了哪些食物 
queue <u> Q;
int n,m,A[26],F[16][26];

void bfs(){
	while(!Q.empty()){
		u ft=Q.front(); Q.pop();
		bool flg=0; 
		for(int i=1;i<=n;i++){
			if(A[i]>ft.V[i]){
				flg=1; break;
			}
		}
		if(flg==0){
			cout<<ft.sum<<" ";
			for(int i=1;i<=m;i++){
				if(ft.R[i]) cout<<i<<" ";
			}
			break;
		}
		
		for(int j=ft.sum+1;j<=m;j++){
			u tp=ft;
			if(!ft.R[j]){
				for(int k=1;k<=n;k++){
					tp.V[k]+=F[j][k];	
				}
				tp.R[j]=1; tp.sum++;
				Q.push(tp);
			}
		}
		
	}
}

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++)
    		scanf("%d",&F[i][j]);
	Q.push(st);//st是一个空状态 
	bfs();
    return 0;
}
2021/7/9 20:00
加载中...