vector改数组:#include <iostream>#include <vector>using namespace std;// 判断一个数是否为素数bool isPrime(int num) { if (num <= 1) return false; for (int i = 2; i * i <= num; i++) { if (num % i == 0) { return false; } } return true;}// 递归计算组合数void dfs(int start, int count, int sum, vector<int>& nums, int k, int& ans) { if (count == k) { if (isPrime(sum)) ans++; return; } for (int i = start; i < nums.size(); i++) { dfs(i + 1, count + 1, sum + nums[i], nums, k, ans); }}int main() { int n, k; cin >> n >> k; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } int ans = 0; dfs(0, 0, 0, nums, k, ans); cout << ans << endl; return 0;}
时间: 2024-03-07 08:49:21 浏览: 88
修改为数组的代码如下:
```c++
#include <iostream>
using namespace std;
const int MAXN = 20;
// 判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 递归计算组合数
void dfs(int start, int count, int sum, int nums[], int n, int k, int& ans) {
if (count == k) {
if (isPrime(sum)) ans++;
return;
}
for (int i = start; i < n; i++) {
dfs(i + 1, count + 1, sum + nums[i], nums, n, k, ans);
}
}
int main() {
int n, k;
cin >> n >> k;
int nums[MAXN];
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int ans = 0;
dfs(0, 0, 0, nums, n, k, ans);
cout << ans << endl;
return 0;
}
```
思路和之前的代码相同,只是将 vector 改成了数组的形式,同时需要在函数参数中传入数组的长度 `n`。
阅读全文