weixin_51717275 2022-04-23 14:45 采纳率: 0%
浏览 442

硬币塔问题,WA了,实在找不出来了,暴风哭泣,如何解决?

硬币塔问题

一个k级硬币塔从下到上,由1个银币,一个k-1级硬币塔,k个金币,一个k-1级硬币塔,1个银币堆成。0级硬币塔只有一个金币。问n级硬币塔从下向上数i个有几个金币。
0<=n<=40
例:
输入 5 13
输出 6
(我案例的输出不知道为什么都是错的)

我的代码
#include<stdio.h>
long long int counthang(int n);
long long int count(int n);
void jilu(int n,long long int i,long long int *sum);
int main() 
{ 
    long long int i,sum=0;
    int n;
    scanf("%d %lld",&n,&i);
    jilu(n,i,&sum);
    printf("%lld",sum);
    return 0; 
}
long long int counthang(int n)
{
    if(n==0)
    return 1;
    else
    return 3+2*counthang(n-1);
}
long long int count(int n)
{
    if(n==0)
    return 1;
    else 
    return n+2*count(n-1);
}
void jilu(int n,long long int i,long long int *sum)
{
    if(i<=n)
    {
        *sum+=0;
    }
    else 
    {
        long long int num=counthang(n);
        if(i>=num-n)
        {
            *sum+=count(n);
        }
        else if(i>num/2)
        {
            *sum+=count(n-1)+n;
            jilu(n-1,i-num/2-1,sum);
        }
        else
        {
            jilu(n-1,i-1,sum);
        }
    } 
}

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • qq_42474641 2022-04-24 18:50
    关注

    你的划分位置不对,这样会漏算金币。
    1 | k-1 | k | k-1 | 1
    或许按这个划分成五个区间更合适

    评论

报告相同问题?

问题事件

  • 修改了问题 7月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 暴雪战网api相关问题
  • ¥15 而使用UE5引擎的 工具选项里 打开c++ visual studio 就会有部分显示加载失败 如图 加载失败的这张图 请问是什么原因
  • ¥15 mysql 对多个字段模糊查询,返回第一个匹配的字段
  • ¥15 the testing results of the whole dataset is empty
  • ¥15 can问题,往哥解决
  • ¥15 FFmpeg 成功推流到 Nginx RTMP 服务器但无法用 ffplay 或 VLC 播放
  • ¥15 请修改以下C语言代码使其能正确输出最短路径
  • ¥20 抖音商城拉码器安卓报错求解决办法或者有新的拉码脚本也可以介绍一下
  • ¥15 MPLAB IDE V2.35 报错make[2]: *** [build/default/production/_ext/1472/MSSP_I2C.p1] Error 1
  • ¥15 在国外文献网站里点击view pdf 加载异常缓慢甚至加载不出来。