用C语言的递归解决分鱼问题

用C语言的递归解决分鱼问题,第1张

下面代码是我自己写的,看别人代码比较累,所以如果楼主愿意,可以看看下面的代码,我会尽量讲解细致一点。

#include <stdio.h>

//sub(manth,fishleft)参数意义:manth表示第几个人分鱼,fishleft表示他分鱼时获得了多少鱼

//函数的返回结果是第manth个人分鱼时剩余的条数,如manth = 5,fishleft = 1,则表示一共捕获了3906条鱼。

int sub(int manth,int fishleft){

if(manth == 1){

fishleft = (5*fishleft +1)

printf("manth = %d,fishleft = %d\n",manth,fishleft)

return fishleft

}

fishleft = 5*sub(--manth,fishleft)+1

printf("manth = %d,fishleft = %d\n",manth+1,fishleft)

return fishleft

}

int main(void){

int manth = 5

int fishleft = 1

printf("%d\n",sub(5,1))

return 0

} //我得到的结果和楼主所给程序运行结果不一致!楼主可以自己计算,如果拍备最后一个人得到的是1条鱼,则他分鱼时应该剩余6条,manth = 2时应该剩余6*5+1 = 31条,信行manth = 3时,应该剩余31*5+1条,最后manth= 5,也就是分鱼开始的时候,应该剩余3906条鱼。

//楼主可以用自己的程序测试,当调用sub(2)时得到的是21,而不袭坦毁是31,就能证明该程序应该是用问题的。

根据提议可知:每个人应分到7个箩筐,每人各3.5筐鱼。采用3*3数组来表示三个人分到的东西。

数组的每行每列元素之和都是7;

数组行: 满筐 + 半筐 = 3.5筐;

每个人所得满筐数不会超过3筐;碧厅

每个人至少有1个半筐;

class Program

{

static void Main(string[] args)

{

int[,] fishermen = new int[3, 3]

for (int m = 1m <= 3m++)//A

{

fishermen[0, 0] = m

fishermen[0, 1] = (int)((3.5 - (double)m) / 0.5)

fishermen[0, 2] = 7 - fishermen[0, 1] - fishermen[0, 0]

for (int n = 1n <= 3n++)//B

{

if (n <m)

continue

fishermen[1, 0] = n

fishermen[1, 1] = (int)((3.5 - (double)n) / 0.5)

if (fishermen[1, 1] <铅升 0)

break

fishermen[1, 2] = 7 - fishermen[1, 1] - fishermen[1, 0]

for (int j = 1j <= 3j++)//C

{

if (j <n || j + n + m != 7)

continue

fishermen[2, 0] = j

fishermen[2, 1] = (int)((3.5 - (double)j) / 0.5)

if (fishermen[2, 1] <0)

break

fishermen[2, 2] = 7 - fishermen[2, 1] - fishermen[2, 0]

if (fishermen[2, 1] + fishermen[1, 1] + fishermen[0, 1] == 7 &&

fishermen[2, 0] + fishermen[1, 0] + fishermen[0, 0] == 7)

{

for (int i = 0i <槐慧老 3i++)

{

Console.WriteLine(i + ":" + fishermen[i, 0] + " " + fishermen[i, 1] + " " + fishermen[i, 2])

}

Console.WriteLine("----------------------------------")

break

}

}

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/12492568.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存