原题:

#include<iostream>
#include<string>
#include <cstdio>
using namespace std;
int drawColor(int c1, int c2, int c3, int last)
{
//cout << c1 << c2 << c3<<endl;
if (c1 < 0 || c2 < 0 || c3 < 0)
return 0;
if (c1 == 0 && c2 == 0 && c3 == 0)
return 1;
if (last==0)
return drawColor(c1 - 1, c2, c3, 1)+drawColor(c1, c2 - 1, c3, 2) + drawColor(c1, c2, c3 - 1, 3);
if (last == 1)
return drawColor(c1, c2 - 1, c3, 2) + drawColor(c1, c2, c3 - 1, 3);
if (last == 2)
return drawColor(c1-1, c2 , c3, 1) + drawColor(c1, c2, c3 - 1, 3);
if (last == 3)
return drawColor(c1, c2-1 , c3, 2) + drawColor(c1-1, c2, c3 , 1);
}
int main()
{
string sin, s;
int color1, color2, color3;
getline(cin, sin, ',');
color1=stoi(sin);
getline(cin, sin, ',');
color2 = stoi(sin);
getline(cin, sin);
color3 = stoi(sin);
cout << drawColor(color1, color2, color3, 0)<<endl;
system("pause");
return 0;
}
本文介绍了一个使用递归算法解决颜色搭配问题的C++程序。该程序通过递归调用自身来计算在给定三种颜色数量的情况下,可以创建多少种不重复的颜色组合。程序接收三种颜色的数量作为输入,并返回所有可能的组合数。
2万+

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



