zoukankan      html  css  js  c++  java
  • 洛谷 P1118 [USACO06FEB]数字三角形`Backward Digit Su`…

    题目链接:https://www.luogu.org/problem/P1118

    #include<bits/stdc++.h>
    using namespace std;
    int n,sum,h[13],flag,y[13][13];
    bool v[13];//防止重复
    void dfs(int step,int ans)//第step个数,ans为总和
    {
    	if(ans>sum||flag)//超过了sum,flag找到了无需再找了
    		return ;
    	if(step==n+1&&ans==sum)//枚举完了,看看结果是否==sum,是打印出来
    	{
    		for(int i=1;i<=n;i++)
    			cout<<h[i]<<" ";
    		flag=1;//标记
    		return ;
    	}
    	for(int i=1;i<=n;i++)
    		if(!v[i])
    		{
    			h[step]=i;
    			v[i]=1;//找到一个数做上标记
    			dfs(step+1,ans+i*y[n][step]);
    			v[i]=0;//回溯
    		}
    }
    int main()
    {
    	cin>>n>>sum;
    	y[1][1]=1;
    	for(int i=2;i<=n;i++)
    		for(int j=1;j<=i;j++)
    			y[i][j]=y[i-1][j-1]+y[i-1][j];
    	dfs(1,0);
    	return 0;
    }
    
  • 相关阅读:
    “数学题”——传钱
    kafka笔记——入门介绍
    SpringBoot集成Dubbo+Zookeeper
    MySql基本语法
    动态规划
    总结
    Java反射
    软件清单
    Java IO操作
    Spring Boot AOP的使用
  • 原文地址:https://www.cnblogs.com/yonglin1998/p/11780819.html
Copyright © 2011-2022 走看看