蓝桥杯---排列小球

排列小球

题目描述
小蓝有黄绿蓝三种颜色的小球,分别为 R, G, BR,G,B 个。同样颜色的小球没有区别。

小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为 t1,将接下来的连续小球个数记为 t2,以此类推直到最右边的小球。

请问,总共有多少总摆放小球的方案,使得t1,t2,⋯ 为严格单调递增序列,即
t1≤t2≤t3≤⋯。

输入描述
输入一行包含三个整数 R, G, BR,G,B。

其中0≤R,G,B≤50。

输出描述
输出一个整数,表示答案。

输入

3 6 0

输出

3

样例说明

用 r 表示红球,g 表示绿球,可能的方案包括:

rrrgggggg

grrrggggg

ggrrrgggg

运行限制
最大运行时间:1s
最大运行内存: 128M
code:

#include <iostream>
using namespace std;
int a,b,c;
int sum=0;

void dfs(int x,int y,int z,int len,int color)
{
    
    
  if(x==0&&y==0&&z==0){
    
    
    sum++;
  }else{
    
    
    for(int i=len+1;i<=x&&color!=0;i++){
    
    
      dfs(x-i,y,z,i,0);
    }

    for(int i=len+1;i<=y&&color!=1;i++){
    
    
      dfs(x,y-i,z,i,1);
    }

    for(int i=len+1;i<=z&&color!=2;i++){
    
    
      dfs(x,y,z-i,i,2);
    }
  }
}

int main()
{
    
    
  cin>>a>>b>>c;
  dfs(a,b,c,0,0);
  dfs(a,b,c,0,1);
  dfs(a,b,c,0,2);
  cout<<sum/2;  
  return 0;
}

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115428807
今日推荐