dfs40分求助
  • 板块P2089 烤鸡
  • 楼主lost_name
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/2/28 17:56
  • 上次更新2024/2/28 18:12:43
查看原帖
dfs40分求助
1274537
lost_name楼主2024/2/28 17:56
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int ans=0;
vector<vector<int>> a;
vector<int> spi;
int sum = 10;
void f2(int x);
void dfs(int x);
void f1(vector<int> spi) {
	for_each(spi.begin(), spi.end(), f2);
	printf("\n");
}
void f2(int x) {
	printf("%d ", x);
}
void dfs(int x) {
	if (x > 9 ) {
		if (sum == n) {
			a.push_back(spi);
			ans++;
			
			return;
		}
		else return;
	}
	
	
	for (int i = 0; i <= 2,spi[x]+i<3,sum+i<=n; i++) {
		spi[x]+=i;
		sum +=i;
		dfs(x + 1);
		spi[x]-=i;
		sum-=i;
	}
}
int main() {
	spi.resize(10, 1);
	cin >>n;
	if (n < 10||n>30) {
		cout << 0;
		return 0;
	}
	dfs(0);
	cout << ans<<endl;
	for_each(a.begin(), a.end(), f1);

	return 0 ;

}
2024/2/28 17:56
加载中...