求
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复31
  • 已保存回复31
  • 发布时间2024/8/15 15:08
  • 上次更新2024/8/15 17:15:47
查看原帖
求
1252442
lucy2012楼主2024/8/15 15:08

这个代码经过我的推算,是用来计算 2n−12^{n-1},但是为什么输入20以上的数它就输出0呢?很明显不是溢出的原因:

#include <bits/stdc++.h>
using namespace std;

long long ret = 0;
int used[20], a[20], n;
bool flag;

void dfs(int x) {
    int i;
    if (x > n) {
        flag = 1;
        for (i = 1; i <= n; i++) {
            if (a[i] + i > n + 2) {
                flag = 0;
                break;
            }
        }
		if (flag) ret++;
            return;
    }
    for (i = 1; i <= n; i++) {
        if (used[i] == 0) {
            used[i] = 1;
            a[x] = i;
            dfs(x + 1);
            used[i] = 0;
            a[x] = 0;
        }
    }
    
}

int main() {
    cin >> n;
    dfs(1);
    cout << ret;
    return 0;
}
2024/8/15 15:08
加载中...