Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
109841 | 罗恩祥 | 二叉树问题 | C++ | 运行超时 | 0 | 1000 MS | 244 KB | 872 | 2023-11-11 11:10:05 |
#include <bits/stdc++.h> using namespace std; int N; double search(int s,int e) { if(s > e) return 1; if(e - s == 0) { return 1; } if(e - s == 1) { return 1; } double num = 0; for(int i = s;i <= e;i++) { if(i == (e - s) / 2 + s) { num += search(s,i-1); } else { num += search(s,i-1); //根节点是第i个被访问的 num += search(i+1,e); } } return num; } int main() { while(cin >> N) { if(N == 2) { cout << 2 << endl; continue; } if(N == 3) { cout << 5 << endl; continue; } double sum = 0; for(int i = 1;i <= N;i++) { if(i == N / 2 + 1) { sum += search(i + 1,N); } else { sum += search(1,i - 1); //根节点是第i个被访问的 sum += search(i + 1,N); } } cout << sum - 3<< endl; } }