菜坤发问
c吧
全部回复
仅看楼主
level 3
鼠疫患者 楼主
大佬们能给看看我的这个代码思路上,逻辑上有啥问题吗[呵呵]?
#include <iostream>
#include <vector>
using namespace std ;
int total = 0 ;
vector <int> a ;
int qiuhe(int n , int x) {
if(n == x) {
return 0 ;
}
else
for(int i = x ; i < n ; i++)
total += a[i] ;
return qiuhe(n - 1 , x) ;
}
int main() {
int tmp ;
while(cin >> tmp)
a.push_back(tmp) ;
for(int i = 0 ; i < (int)a.size() ; i++)
qiuhe(a.size() , i) ;
cout << total ;
}
2025年12月18日 09点12分 1
level 3
鼠疫患者 楼主
2025年12月18日 09点12分 2
level 3
鼠疫患者 楼主
[惊哭]
2025年12月18日 09点12分 3
level 5
s所有子集之和小于多少?int表示范围多少?
2025年12月18日 12点12分 4
吧务
level 11
十年OI一场空,不开long long见祖宗!
2025年12月19日 01点12分 5
吧务
level 11
一个是结果较大,题目数据范围明确指出了所有子集之和≤10¹⁸
另一个是求和逻辑有问题,会遗漏子集!
最简单的做法是,一个集合的子集之和等于2的(集合元素个数 - 1)次方乘以集合所有元素之和!
例如样例集合包含2和3两个元素,那么子集之和就是
2²⁻¹ × (2 + 3) = 10
2025年12月19日 01点12分 6
谢谢解答[哈哈]
2025年12月19日 11点12分
1