动态规划--牛客网19校招--魔法深渊

题目描述

前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。

由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施放了魔法的深渊,月神想要爬上此深渊。

 

已知深渊有N层台阶构成(1 <= N <= 1000),并且每次月神仅可往上爬2的整数次幂个台阶(1、2、4、....),请你编程告诉月神,月神有多少种方法爬出深渊

输入描述:

输入共有M行,(1<=M<=1000)

第一行输入一个数M表示有多少组测试数据,

接着有M行,每一行都输入一个N表示深渊的台阶数

输出描述:

输出可能的爬出深渊的方式

示例1

输入

复制

4
1
2
3
4

输出

复制

1
2
3
6

备注:

为了防止溢出,可将输出对10^9 + 3取模

如果台阶数为4,每一步可以爬1,2,4,个台阶,则dp[4]=dp[3]+dp[2]+dp[0]

同理有dp[n]=dp[n-1]+dp[n-2]+dp[n-4]+......

一、递归的方法(但是本题递归在提交时会超时,因此需采用第二种非递归的方法):

#include<stdio.h>
#include<math.h>
int Mod=1000000003;
int Fun(int n)
{
    int i=0,sum=0,t,x;
    if(n==1)
    {
        return 1;
    }
    if(n==0)
    {
        return 1;
    }
    if (n ==2)
    {
        return 2;
    }
    while(1)
    {
        t=pow(2,i);
        if(n-t<0)
        {
            break;
        }
        sum+=Fun(n-t);
        sum%=1000000003;
        i++;
    }
    return sum;
}
int main()
{
    int n,t,i,N;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&n);
        a[i]=Fun(n);    
    }
    for(i=0;i<N;i++)
    {
        printf("%d\n",a[i]);
    }
}

二、非递归

#include<stdio.h>
#include<math.h>
int Mod=1000000003;
int main()
{
    int n,t,i;
    int dp[1000],j;
    dp[0]=1;
    dp[1]=1;
    for(i=2;i<=1000;i++)
    {
        dp[i]=0;
        for(j=1;j<=i;j*=2)
        {
            dp[i]+=dp[i-j];
            dp[i]%=Mod;
        }
    }
    int N;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&n);
        a[i]=dp[n];    
    }
    for(i=0;i<N;i++)
    {
        printf("%d\n",a[i]);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
平民海草行久在原神深渊12-3下半中可以使用以下阵容进行打法: 主阵容: 1.主DPS:可以选择使用雷元素或火元素的角色,如芭芭拉、迪卢克或凯亚等,注意要加强元素抗性和攻击力。 2.辅助DPS:可以选择使用风元素或冰元素的角色,如旅行者、琴或甘雨等,主要用于控制沙虫的移动和攻击,增加队伍输出。 3.支援角色:可以选择使用能提供元素增益和治疗的角色,如钟离、行秋或班尼特等,主要用于增加队伍的生存能力和输出。 4.反应角色:可以选择使用能产生元素反应的角色,如菲谢尔、雷泽或烟绯等,主要用于增加队伍的输出和控制。 备选阵容: 1.主DPS:可以选择使用其他元素的角色,如岩元素或水元素,视情况而定。 2.辅助DPS:可以选择使用其他元素的角色,如雷元素或火元素,视情况而定。 3.支援角色:可以选择使用其他能提供元素增益和治疗的角色,如丽莎、珂亚或诺艾尔等,视情况而定。 4.反应角色:可以选择使用其他能产生元素反应的角色,如安柏、凝光或香菱等,视情况而定。 在打沙虫的时候,需要注意以下几点: 1.沙虫有两个弱点,分别位于头部和尾部,攻击这两个部位可以增加输出和控制。 2.沙虫会在地下移动,需要用辅助DPS的技能进行控制。 3.沙虫会喷射毒液,需要躲避或使用支援角色的治疗技能进行治疗。 4.沙虫会释放元素爆发,需要注意躲避和加强生存能力。 总的来说,需要根据自己的阵容和实际情况进行组合和打法,调整好每个角色的技能和装备,才能更好地应对深渊12-3下半的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值