P2789 直线交点数
原题链接
这道题目的意思是有多少不同焦点数的方案数。

AC代码:
#include<iostream>
using namespace std;
const int N = 1e6;
bool p[N];
int ans;
void dfs(int n, int m) {
if (!n) {
if (!p[m]) {
p[m] = 1;
ans++;
}
} else {
for (int i = n; i >= 1; i--) {
dfs(n - i, (n - i) * i + m); //(n-i)*i表示的是n条直线n-i条平行线共有多少种交点,m表示上一阶段的点数。
}
}
}
int main() {
int n;
cin >> n;
dfs(n, 0); //搜索 n 表示当前平行线的个数
cout << ans; //ans统计结果
return 0;
}
没有什么能阻止我对知识的追求!!!

浙公网安备 33010602011771号