求帮助qwq
查看原帖
求帮助qwq
1232696
zbbfans楼主2024/11/11 18:07

为什么这样写不对

#include<bits/stdc++.h>
using namespace std;
inline long long read(){
	long long f=1,k=0;
	char c=getchar();
	while(c<'0' || c>'9'){
		if(c=='-') f=-f;
		c=getchar();
	}
	while(c>='0' and c<='9') k=k*10+c-'0',c=getchar();
	return f*k;
}
inline void print(long long x){
	if(x<0) putchar('-'),x=-x;
	if(x<10) putchar(x+'0');
	else print(x/10),putchar(x%10+'0');
}
long long n,m,x;
long long a[100010];
long long dp[100010];
int main(){
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
	}
	m=read();
	for(int i=1;i<=m;i++){
		dp[read()]=-1;
	}
	x=read();
	dp[0]=1;
	for(int i=1;i<=n;i++){
		for(int j=a[i];j<=x;j++){
			if(dp[j]!=-1 and dp[j-a[i]]==1){
				dp[j]=1;
			}
		}
	}
	if(dp[x]) puts("Yes");
	else puts("No");
	return 0;
}

这样写就过了

#include<bits/stdc++.h>
using namespace std;
inline long long read(){
	long long f=1,k=0;
	char c=getchar();
	while(c<'0' || c>'9'){
		if(c=='-') f=-f;
		c=getchar();
	}
	while(c>='0' and c<='9') k=k*10+c-'0',c=getchar();
	return f*k;
}
inline void print(long long x){
	if(x<0) putchar('-'),x=-x;
	if(x<10) putchar(x+'0');
	else print(x/10),putchar(x%10+'0');
}
long long n,m,x;
long long a[100010];
long long dp[100010];
int main(){
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
	}
	m=read();
	for(int i=1;i<=m;i++){
		dp[read()]=-1;
	}
	x=read();
	dp[0]=1;
	for(int i=0;i<=x;i++){
		if(dp[i]==-1) continue;
		for(int j=1;j<=n;j++){
			if(i-a[j]>=0 and dp[i-a[j]]==1){
				dp[i]=1;
			}
		}
	}
	if(dp[x]) puts("Yes");
	else puts("No");
	return 0;
}
2024/11/11 18:07
加载中...