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;
}

 

posted @ 2022-10-10 20:25  Luli&  阅读(33)  评论(0)    收藏  举报