九度oj1408喫豆機器人

題目1408:喫豆機器人

時間限制:1 秒

內存限制:32 兆

特殊判題:

提交:778

解決:149

題目描述:

淘寶公司內部有許多新鮮的小玩具,例如淘寶智能機器人。小時候,大家都玩過那個喫豆子的遊戲吧,這機器人就是按照這個遊戲設計的,它會朝着豆子的方向行走。不過機器人還存在一個bug,他只會朝南和朝東走。現在有一塊空地,分成了n*m個格子,每個格子內有一顆豆子。機器人的起點在西北角,終點在東南角。請問機器人從起點到終點有多少種不同的方法。

輸入:

每個案例輸入只有一行,有n和m兩個正整數,n,m均小於等於10^3。由於答案很大,所以答案對10009取餘。

輸出:

對於每個案例,輸出一行,輸出機器人從起點到終點的總方法數。

樣例輸入:
2 2
3 3
樣例輸出:
2
6

2012年九度互動社區淘寶實習生春季招聘上機考試

一看數據量這麼大,1000*1000.。。

果斷放棄一般的搜索。

還有我們發現它的答案是隻有這幾種。。

就是說可以打表操作。

而且我們一般看到這種大數據操作就應該要想到用動態規劃。。

沒辦法,高效。。。

dp[i][j] 代表有i行j列的總數是多少。。

所以我們很容易就想出狀態方程是

dp[i][j] = dp[i-1][j]+dp[i][j-1]


#include<cstdio>
#include<cstring>
#include<cstdlib>
long long dp[1004][1004];
void Init()
{
    int i,j;
        for(i=1;i<=1002;i++)
        {
        dp[i][1] = dp[1][i] = 1;
        }    
        
        for(i=2;i<=1002;i++)
        {
        for(j=2;j<=1002;j++)
        {
            dp[i][j] = (dp[i-1][j]+dp[i][j-1])%10009;
        }    
        }    
}    
int main()
{
    int row,col;  
    Init();
    while(scanf("%d%d",&row,&col)!=EOF)
    {
        printf("%lld\n",dp[row][col]%10009);
    }    
    return 0;
}    

很簡單的代碼。。。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章