C语言10个数字判断问题从1,2.10这10个数字中任取6个全组合输出(每组6个不同数字)并满足条件被3除余数为0有1至2个被3除余数为1有1至2个被3除余数为2有1至2个和值22至26结果下面正确1-2-3-4-5-91-
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/29 14:02:00
C语言10个数字判断问题从1,2.10这10个数字中任取6个全组合输出(每组6个不同数字)并满足条件被3除余数为0有1至2个被3除余数为1有1至2个被3除余数为2有1至2个和值22至26结果下面正确1-2-3-4-5-91-
C语言10个数字判断问题
从1,2.10这10个数字中任取6个全组合输出(每组6个不同数字)
并满足条件
被3除余数为0有1至2个
被3除余数为1有1至2个
被3除余数为2有1至2个
和值22至26
结果下面正确
1-2-3-4-5-9
1-2-3-4-6-8
1-2-3-5-6-7
C语言10个数字判断问题从1,2.10这10个数字中任取6个全组合输出(每组6个不同数字)并满足条件被3除余数为0有1至2个被3除余数为1有1至2个被3除余数为2有1至2个和值22至26结果下面正确1-2-3-4-5-91-
这是个递归的算法虽然复杂度比较高,但能解决问题
如果要写成递推的话可能比较麻烦,既然问题规模不大就不去耗费精力了
#include
void getnumber(int n, int num, int mod_3_0,int mod_3_1, int mod_3_2,int value, int *output)
{
if (num != 0)
{
output[n] = num;
value -= num;
}
int i;
if (n < 5)
{
for (i = num + 1; i 0)
getnumber(n + 1, i, mod_3_0 - 1, mod_3_1, mod_3_2, value, output);
else if (i % 3 == 1 && mod_3_1 > 0)
getnumber(n + 1, i, mod_3_0, mod_3_1 - 1, mod_3_2, value, output);
else if (i % 3 == 2 && mod_3_2 > 0)
getnumber(n + 1, i, mod_3_0, mod_3_1, mod_3_2 - 1, value, output);
}
}
if (n == 5 && value >= 0 && value