rt,我用dfs写了今天abc的c题,但是WA13个点,求大佬看看我代码有什么问题
#include <bits/stdc++.h>
using namespace std;
#define maxn 1000
#define int unsigned long long
string s;
int len;
string ans;
string to2(int n)
{
if (n == 0)
return "0";
string s = "";
while (n > 0)
{
s += to_string(n % 2);
n /= 2;
}
reverse(s.begin(), s.end());
return s;
}
int back2(string s)
{
int len = s.length();
int n = 0;
for (int i = 0; i < len; ++i)
if (s[i] == '1')
n += pow(2, len - 1 - i);
return n;
}
void dfs(int x, string str)
{
if (x >= str.length())
{
cout << back2(str) << endl;
return;
}
if (str[x] == '1')
{
str[x] = '0';
dfs(x + 1, str);
str[x] = '1';
dfs(x + 1, str);
return;
}
dfs(x + 1, str);
}
signed main()
{
int n;
cin >> n;
if (n == 0)
{
cout << 0;
return 0;
}
s = to2(n);
len = s.length();
dfs(0, s);
// cout<<s;
return 0;
}