一个点对
查看原帖
一个点对
779118
linjitong楼主2024/1/12 20:23
#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[120];
int c[20][20];
bool vis[20];
void dfs(int dep,int cnt) {
	if(cnt>m)
		return ;
	if(dep>n&&cnt==m) {
		cout<<a[1];
		for(int i=2; i<=n; i++)
			cout<<' '<<a[i];
		exit(0);
	}
	else
	{
		return ;
	}
	for(int i=1; i<=n; i++) {
		if (vis[i]==1)
			continue;
		vis[i]=true;
		a[dep]=i;
		dfs(dep+1,cnt+i*c[n][dep]);
		vis[i]=0;
	}
}
int main() {
	cin >> n >> m;
	c[1][1] = 1;
	for (int i = 2; i <= n; i++)
		for (int j = 1; j <= i; j++)
			c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
	dfs(1, 0);
	return 0;
}
2024/1/12 20:23
加载中...