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

    杨辉三角的带权应用,杨辉三角用组合数推,(记得从二开始),什么数组该赋什么值想好了再写

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    int f[13][14],n,summ,sum,w[14],ff;
    bool vis[13];
    void zu_he(){
    	for(int i=1;i<=n;i++)	f[i][1]=1;
    	for(int i=2;i<=n;i++){
    		for(int j=2;j<=i;j++){
    			f[i][j]=f[i-1][j]+f[i-1][j-1];
    		}
    	}
    }
    void dfs(int num){
    	if(summ>sum)	return;
    	if(num==n+1){
    		if(summ==sum){
    			for(int i=1;i<=n;i++)
    				printf("%d ",w[i]);
    			ff=2;
    		//	exit(0);
    		}
    		return;
    	}
    	if(ff==2)	return;
    	for(int i=1;i<=n;i++){
    		if(vis[i]){
    			vis[i]=0;
    			w[num]=i;
    			summ+=(f[n][num]*i);
    			dfs(num+1);
    			if(ff==2)	return;
    			summ-=(f[n][num]*i);
    			vis[i]=1;
    		}
    	}
    }
    int main(){
    	scanf("%d%d",&n,&sum);
    	for(int i=1;i<=n;i++)	vis[i]=1;
    	zu_he();
    	dfs(1);
    	return 0;
    }
    
  • 相关阅读:
    jvm05
    jvm04
    jvm03
    jvm02
    jvm01
    rabbitmq-01
    lock接口认识及可重入锁的实现
    volitile的使用
    自旋锁,死锁与重入锁
    上机实验4--求序列的最大元素和最小元素
  • 原文地址:https://www.cnblogs.com/jindui/p/11634170.html
Copyright © 2011-2022 走看看