找不出这两份代码的区别
查看原帖
找不出这两份代码的区别
856008
Mirror_of_the_Sky楼主2024/5/30 13:39

rt。本蒟蒻第一份代码全WA,第二份代码就AC了,有哪位大佬能帮我看一下吗?

#include <bits/stdc++.h>
using namespace std;
int a[44],ans;
int f[44][330];
int main() {
	int n,l,r;
	cin>>n>>l>>r;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=r; j++) {
	        if(j<a[i]){
	        	f[i][j]=f[i-1][j];
			}
			if(j==a[i]) {
				f[i][j]=f[i-1][j]+1;
			} else {
				f[i][j]=f[i-1][j]+f[i-1][j-a[i]];
			}
		}
	}
	for(int j=l; j<=r; j++) {
			ans+=f[n][j];
	}

	cout<<ans;
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
int a[44],ans;
int f[44][330];
int main() {
	int n,l,r;
	cin>>n>>l>>r;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=r; j++) {
            if(j<a[i]) {
				f[i][j]=f[i-1][j];
			} 
			else if(j>a[i]){//here
				f[i][j]=f[i-1][j]+f[i-1][j-a[i]];
			}
			else{
				f[i][j]=f[i-1][j]+1;
			}
		}
	}
	for(int j=l; j<=r; j++) {
		ans+=f[n][j];
	}
	cout<<ans;
	return 0;
}

2024/5/30 13:39
加载中...