C语言10个数字判断问题

问题描述:

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
1个回答 分类:综合 2014-09-28

问题解答:

我来补答
这是个递归的算法虽然复杂度比较高,但能解决问题
如果要写成递推的话可能比较麻烦,既然问题规模不大就不去耗费精力了
#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
再问: 有错误编译不正确啊
再答: 你确定?你什么编译器?我在gcc和vs2010上都编译对的
再问: wintc和vc6.0都不能通过,你所提到那2个没有用过
再答: 你把文件的后缀名改成.cpp然后在vc6下保证通过
再问: vc6提示有一个错误 wintc提示错误 noname.c 11: 表达式语法错在 getnumber 函数中 noname.c 14: 未定义的符号'i'在 getnumber 函数中
 
 
展开全文阅读
剩余:2000
上一页:解题方法 技巧
下一页:过程3