日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/7/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态规划--牛客网19校招--魔法深渊 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述

前幾個(gè)月放映的頭號(hào)玩家簡(jiǎn)直火得不能再火了,作為一個(gè)探索終極AI的研究人員,月神自然去看了此神劇。

由于太過興奮,晚上月神做了一個(gè)奇怪的夢(mèng),月神夢(mèng)見自己掉入了一個(gè)被施放了魔法的深淵,月神想要爬上此深淵。

?

已知深淵有N層臺(tái)階構(gòu)成(1 <= N <= 1000),并且每次月神僅可往上爬2的整數(shù)次冪個(gè)臺(tái)階(1、2、4、....),請(qǐng)你編程告訴月神,月神有多少種方法爬出深淵

輸入描述:

輸入共有M行,(1<=M<=1000)第一行輸入一個(gè)數(shù)M表示有多少組測(cè)試數(shù)據(jù),接著有M行,每一行都輸入一個(gè)N表示深淵的臺(tái)階數(shù)

輸出描述:

輸出可能的爬出深淵的方式

示例1

輸入

復(fù)制

4 1 2 3 4

輸出

復(fù)制

1 2 3 6

備注:

為了防止溢出,可將輸出對(duì)10^9 + 3取模

如果臺(tái)階數(shù)為4,每一步可以爬1,2,4,個(gè)臺(tái)階,則dp[4]=dp[3]+dp[2]+dp[0]

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

一、遞歸的方法(但是本題遞歸在提交時(shí)會(huì)超時(shí),因此需采用第二種非遞歸的方法):

#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]);
?? ?}
}

總結(jié)

以上是生活随笔為你收集整理的动态规划--牛客网19校招--魔法深渊的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。