m0_57934880 2021-05-05 20:08 采纳率: 100%
浏览 82
已采纳

简单的十来行C语言(直接给oj作业代码余额采纳)

你正在玩一个游戏。游戏中有一排房屋,最开始的时候都是没有上锁的,每间房存有一定数量金币。 但是这些房子里装了联通装置,一旦拿取了某间房子的金币,相邻的两间房屋就会自动锁死,锁死的房间不能拿取金币。 你可以进行多次拿取金币的操作,求游戏结束后,最多能获得多少金币。 input: 2行 第1行1个整数n代表数组长度, 第2行n个正整数,代表每间房的现金数量,用空格隔开 (0

  • 写回答

10条回答 默认 最新

  • 白驹_过隙 算法领域新星创作者 2021-05-05 20:31
    关注
    #include <stdio.h>
    #include <stdlib.h>
    int rob(int *nums, int numsSize)
    {
        if(numsSize == 0)
        {
            return 0;
        }
        else if(numsSize == 1)
        {
            return nums[0];
        }
        else if(numsSize == 2)
        {
            return fmax(nums[0],nums[1]);
        }
        int dp1 = nums[0];
        int dp2 = fmax(nums[0],nums[1]);
        int sum = 0;
        for(int i = 2;i < numsSize;i++)
        {
            sum = fmax(nums[i] + dp1,dp2);
            dp1 = dp2;
            dp2 = sum;
        }
        return sum;
    
    }
    
    int main()
    {
        int i,n,a[21];
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        printf("%d",rob(a,n));
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误