新手求助,想问一下这个程序的具体算法思想,好像是贪心算法
国王分财产。某国王临终前给儿子们分财产。他把财产分为若干份,然后给第一个儿子一份,再加上剩余财产的1/10;给第二个儿子两份,再加上剩余财产的1/10;…;给第i个儿子i份,再加上剩余财产的1/10。每个儿子都窃窃自喜。以为得到了父王的偏爱,孰不知国王是“一碗水端平”的。请用程序回答,老国王共有几个儿子?财产共分成了多少份?#include<stdio.h>
void main()
{
int a, i = 0, n = 0;
do
{
n += 9; //王子数为9的倍数
a = n;
for (i = n - 1;i >= 1;i--)
{
if (a % 9 != 0)
break; // 数目不符跳出 for 循环
else
a = a * 10 / 9 + i; // 计算到第 i 个王子时剩余的份数
}
} while (i >= 1); // 当 i>= 1 时继续循环
printf("共有%d个儿子,财产分为%d份", n, a);
} 这道题就是的一个递归的题,最终剩余为0,
第一个儿子拿了 1 份后,剩余 80 份,他又拿了 1/10 后,剩余 72 份,共拿了9份;
第二个儿子拿了 2 份后,剩余 70 份,他又拿了 1/10 后,剩余 63 份,共拿了9份;
第三个儿子拿了 3 份后,剩余 60 份,他又拿了 1/10 后,剩余 54 份,共拿了9份;
第四个儿子拿了 4 份后,剩余 50 份,他又拿了 1/10 后,剩余 45 份,共拿了9份;
第五个儿子拿了 5 份后,剩余 40 份,他又拿了 1/10 后,剩余 36 份,共拿了9份;
第六个儿子拿了 6 份后,剩余 30 份,他又拿了 1/10 后,剩余 27 份,共拿了9份;
第七个儿子拿了 7 份后,剩余 20 份,他又拿了 1/10 后,剩余 18 份,共拿了9份;
第八个儿子拿了 8 份后,剩余 10 份,他又拿了 1/10 后,剩余9 份,共拿了9份;
第九个儿子拿了 9 份后,剩余0 份, 共拿了9份;
页:
[1]