⑤处应填()。
对于输入的正整数 n 重新排列,判断是否有可能新重组的数字是 2 的幂。 提示:把正整数看成字符串,通过dfs的方法找出所有没有前导零的重排结果,通过checkPower函数,判断是否为2的幂
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
bool flag;
vector<int> vis;
string nums;
bool checkPower(int n) {
return (n & (n - 1)) == ①;
}
void dfs(int x, int ana) {
if (②) {
flag = checkPower(ana);
return;
}
for (int i = 0; i < nums.length(); i++) {
if (ana == 0 && nums[i] == '0' || vis[i] || (i > 0 && !vis[i - 1] && ③)) {
continue;
}
vis[i] = 1;
dfs(x + 1, ④);
if (flag) return;
vis[i] = 0;
}
}
int main() {
cin >> nums;
int n;
cin >> n;
vis.resize(nums.length());
dfs(0, 0);
cout << (flag ? "yes" : "no") << endl;
return 0;
}
A. sort(nums, nums + nums.length());
B. sort(nums.begin() + 1, nums.end());
C. sort(nums.begin(), nums.begin() + nums.length());
D. sort(nums + 1, nums + nums.length() + 1);