#include<bits/stdc++.h>
using namespace std;
char sz[151];//存放排好的字母
int che[100];//存放连续字母的个数
int ans=0;//答案
void dfs(int step, int r, int g, int b);//深搜
bool check();//检查是否为递增
int main()
{
int r,g,b;
cin>>r>>g>>b;
dfs(0,r,g,b);
cout<<ans<<endl;
return 0;
}
void dfs(int step, int r, int g, int b)
{
if (r==0 && g==0 && b==0)
{
if (check())
{
ans++;
}
return;
}
if (r!=0)
{
sz[step]='r';
dfs(step+1,r-1,g,b);
}
if (g!=0)
{
sz[step]='g';
dfs(step+1,r,g-1,b);
}
if (b!=0)
{
sz[step]='b';
dfs(step+1,r,g,b-1);
}
}
bool check(){
int cnt = 1;
int t = 0;
for(int i=0;sz[i];i++){
if(sz[i]==sz[i+1]){
cnt++;
}else{
che[t++] = cnt;
cnt = 1;
}
}
for(int i=1;i<t;i++){
if(che[i]<=che[i-1]){
return false;
}
}
return true;
}
排列小球(DFS)
最新推荐文章于 2024-08-09 13:31:36 发布
该博客主要探讨了一个使用深度优先搜索(DFS)解决的编程问题:如何递归地排列一定数量的红色、绿色和蓝色小球,使得排列后的序列是连续字母单调递增的。博客中给出了C++代码实现,并通过`check()`函数验证排列是否满足条件。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
ACE-Step
音乐合成
ACE-Step
ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言
1478

被折叠的 条评论
为什么被折叠?



