题解
  • 板块P2089 烤鸡
  • 楼主Shuangsan
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/8/4 09:43
  • 上次更新2025/8/4 09:55:08
查看原帖
题解
1543390
Shuangsan楼主2025/8/4 09:43
#include <stdio.h>

int n;
int a[10],count = 0;

int main(){
	void dfs(int step,int sum);
	void count_dfs(int p,int m);
	
	scanf("%d",&n);
	
	count_dfs(0,0);
	printf("%d\n",count);
	
	dfs(0,0);
	
	return 0;
}
void count_dfs(int p,int m){
	if(p == 10){
		if( m == n ){
		    count++;   
	    }
		return;
	} 
	for(int k = 1; k <= 3; k++){
			a[p] = k;
			count_dfs(p + 1 , m + k);
	} 	
}

void dfs(int step,int sum){
	if(step == 10){
		if( sum == n ){
		    for(int i = 0; i < 10 ; i++){
			    printf("%d ",a[i]);
		    }
		    printf("\n");
		    return;
	    }
	}
	
	if(sum + (10 - step) * 1 > n || sum + (10 - step) * 3 < n){
		return;
	} 
	for(int i = 1; i <= 3; i++){
			a[step] = i;
			dfs(step + 1 , sum + i);
	} 	
}
2025/8/4 09:43
加载中...