欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【洛谷】P1118 [USACO06FEB]数字三角形`Backward Digit Su (题解)

程序员文章站 2022-03-26 18:06:28
...

P1118 [USACO06FEB]数字三角形`Backward Digit Su`…


第一次看到这个题的感受 :

【洛谷】P1118 [USACO06FEB]数字三角形`Backward Digit Su (题解)

题解:

#include <bits/stdc++.h>
using namespace std;
int n,sum;
int ha[13],flag,yh[13][13];
bool v[13];
void print()
{
	for(int i=1; i<=n; i++)
	{
		printf("%d ",ha[i]);
	}
}
void dfs(int step,int ans)
{
	if(ans>sum||flag)
	{
		return;
	}
	if(step==n+1&&ans==sum)
	{
		print();
		flag=1;
		return;
	}
	for(int i=1; i<=n; i++)
	{
		if(!v[i])
		{
			ha[step]=i;
			v[i]=true;
			dfs(step+1,ans+i*yh[n][step]);
			v[i]=false;
		}
	}
}

int main()
{
	scanf("%d%d",&n,&sum);
	yh[1][1]=1;
	for(int i=2; i<=n; i++)
	{
		for(int j=1; j<=i; j++)
		{
			yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
		}
	}
	dfs(1,0);
	return 0;
}

欢迎拷贝~

相关标签: 洛谷 题解 c++