文章

2

粉丝

0

获赞

2

访问

213

头像
小偷的背包 题解:
P1123 中国科学技术大学机试题
发布于2025年3月16日 13:29
阅读数 176

//问题的本质就是是否存在一组非零向量使得其与权重矩阵的点击为背包容量
#include<bits/stdc++.h>
using namespace std;
int main(){
	int s,n;
	while(cin>>s>>n){
		int a[n+1];//0代表不装,1代表装,最后如果全零代表无解
		for(int i=0;i<n;i++){
			a[i]=0;//初始化0
		}
		int w[n+1];//代表权重
		for(int i=0;i<n;i++){
			cin>>w[i];
		}
		for(int i=0;i<=n;i++){//遍历权重矩阵如果装得下就置a矩阵对应位置为1,装不下不操作
			if(s>=w[i]){//装得下
				a[i]=1;
				s-=w[i];
			}
		}
		int sum=0;
		for(int i=0;i<=n;i++){//a和w做内积等于s则输出yes否则输出no
			
			sum+=a[i]*w[i];
		}
		if(sum==s){
			cout<<"yes!"<<endl;
		}else cout<<"no!"<<endl;
	}
}

最后的结果是66%有人能改进吗

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发