题解 | 硬币凑钱 c#

硬币凑钱

https://www.nowcoder.com/practice/a9228c3f450749a5bc8edd2f0e7b90e9

using System;
using System.Collections.Generic;
public class Program {
    public static void Main() {

        long.TryParse(Console.ReadLine(), out long num);
        //每个状态,可由dp[i-1],dp[i-5],dp[i-7]三种状态+1转换过来,故只需要对比这三种状态拿到最小值加一就行
        List<long> dp = new List<long> { };
        dp.Add(1);
        dp.Add(2);
        dp.Add(3);
        dp.Add(4);
        dp.Add(1);
        dp.Add(2);
        dp.Add(1);
        if (num <= 7) {
            Console.WriteLine(dp[(int)num - 1]);
        } else {
            for (int i = 7; i < num; i++) {
                long min1 = Math.Min(dp[i - 1], dp[i - 5]);
                long min2 = Math.Min(dp[i - 7], min1);
                dp.Add(min2 + 1);
            }
            Console.WriteLine(dp[(int)num - 1]);
        }
        
    }
}

全部评论

相关推荐

脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务