社区讨论

有点不能理解,为啥一个WA,一个AC

B3624猫粮规划参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo7qtoog
此快照首次捕获于
2023/10/27 06:15
2 年前
此快照最后确认于
2023/10/27 06:15
2 年前
查看原帖
AC:
CPP
#include <iostream>
using namespace std;
int n, l, r, ans=0;
int a[55], w[55];
void dfs(int pos) {
	int sum = 0;
	for(int i = 1; i <= pos - 1; i++) {
		if(a[i]!=0)
			sum+=a[i] * w[i];
	}
	if(sum>r) return;
	if(pos == n + 1) {
		if(sum<=r && sum>=l)
			ans++;
		return;
	}
	for(int i = 0; i <= 1; i++) {
		a[pos]=i;
		dfs(pos+1);
	}
}
int main() {
	cin >> n >> l >> r;
	for(int i = 1; i <= n; i++)
		cin >> w[i];
	dfs(1);
	cout << ans << endl;
	return 0;
}
WA:
CPP
#include <cstdio>
using namespace std;
int n, l, r, ans = 0;
int a[55], w[55];
void dfs(int pos) {
	int sum = 0;
	for(int i = 1; i <= pos - 1; i++) {
		if(a[i] != 0) {
			sum +=a[i] * w[i];
		}
	}
	if(sum > r) {
		return;
	}
	if(pos == n + 1) {
		if(sum <= r && sum >= 1) {
			ans++;
		}
		return;
	}
	for(int i = 0; i <= 1; i++) {
		a[pos] = i;
		dfs(pos + 1);
	}
}
int main() {
	scanf("%d%d%d", &n, &l, &r);
	for(int i = 1; i <= n; i++) {
		scanf("%d", &w[i]);
	}
	dfs(1);
	printf("%d\n", ans);
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...