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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu 2563

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 2563 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

統計問題

Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 833 Accepted Submission(s): 523

Problem Description 在一無限大的二維平面中,我們做如下假設:
1、??每次只能移動一格;
2、??不能向后走(假設你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、??走過的格子立即塌陷無法再走第二次;

求走n步不同的方案數(2種走法只要有一步不一樣,即被認為是不同的方案)。
?
Input 首先給出一個正整數C,表示有C組測試數據
接下來的C行,每行包含一個整數n (n<=20),表示要走n步。
?
Output 請編程輸出走n步的不同方案總數;
每組的輸出占一行。
?
Sample Input 2 1 2 ?
Sample Output 3 7 挑戰思維的一道題 假設處于第i步,設a[i]表示第i步向上走,b[i]表示第i步向左或右的步數,總步數f[i]=a[i]+b[i] 假設第i步上走,則其可以是第i-1步向上走再向上走得到即a[i-1],也可以是第 i-1步往左或右走得到(因為向上走沒有什么限制)即b[i-1],所以a[i]=a[i-1]+b[i-1]; 假設第i步向左或右走,則可以是第i-1步向上走再往左或右走得到,因為兩個方向都可以所以即為2*a[i-1],也可以是 第i-1步往左之后只能再往左或往右之后只能再往右走得到(只能繼續保持原來的方向,所以不能乘以2),b[i]=2*a[i-1]+b[i-1];解這三個方程得f[n]=2*f[n-1]+f[n-2],,,, 解得時候要有點耐心,也不是很容易一下子看得出來的 #include<iostream>
#include<cstdio>
using namespace std;
long long ?f[21];
int main()
{
? ? int cas,n;
? ? f[1]=3;f[2]=7;
? ? for(int i=3;i<=20;i++)
? ? ? ? f[i]=2*f[i-1]+f[i-2];
? ? cin>>cas;
? ? while(cas--)
? ? {
? ? ? ? cin>>n;
? ? ? ? cout<<f[n]<<endl;
? ? }
? ? return 0;
}


轉載于:https://www.cnblogs.com/smilesundream/p/6642576.html

總結

以上是生活随笔為你收集整理的hdu 2563的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。