zoukankan      html  css  js  c++  java
  • 小兔的棋盘


    title: 小兔的棋盘
    tags: [acm,杭电]

    题目链接

    小兔的棋盘

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10244    Accepted Submission(s): 5248

    Problem Description

    小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!

    Input

    每次输入一个数n(1<=n<=35),当n等于-1时结束输入。

    Output

    对于每个输入数据输出路径数,具体格式看Sample。

    Sample Input

    1
    3
    12
    -1
    

    Sample Output

    1 1 2
    2 3 10
    3 12 416024
    

    题意

    从(0,0)点出发到(n,n)点,一共有多少条路线,规定不穿越对角线,就是只能向右或者向下。

    分析

    由于是一个正方形的宫格,连接对角线把棋盘分成两部分,其中一部分的走法与另外一部分的走法完全一样,所以计算时只需计算其中的一部分就行,最后再让结果乘以2。

    最边上的只有一条路径到达,如图中的B点只能从上到B点或者从左方到B点,再如对角线上的C点,只能从A点到达,所以

    for(int i=1; i<40; i++)
            for(int j=1; j<=i; j++)
            {
                if(j==i)
                    a[i][j]= a[i][j-1];
                else
                    a[i][j]=a[i-1][j]+a[i][j-1];
            }
    

    代码

    #include <iostream>
    #include<algorithm>
    #include<stdio.h>
    using namespace std;
    int main()
    {
        int n;
        long long int a[40][40];
        for(int i=0; i<40; i++)
            a[0][i]=1;
        for(int i=0; i<40; i++)
            a[i][0]=1;
        for(int i=1; i<40; i++)
            for(int j=1; j<=i; j++)
            {
                if(j==i)
                    a[i][j]= a[i][j-1];
                else
                    a[i][j]=a[i-1][j]+a[i][j-1];
            }
        int counter=1;
        while(~scanf("%d",&n),n)
        {
            if(n==-1)break;
            printf("%d %d %lld
    ",counter++,n,a[n][n]*2);
        }
        return 0;
    }
    
    
    
  • 相关阅读:
    设计模式
    TCP拥塞控制
    TCP 连接建立和断开,以及状态转换
    python unicode字符串
    python语法笔记(七)
    python语法笔记(六)
    python语法笔记(五)
    python语法笔记(四)
    python语法笔记(三)
    【密码学】公钥与私钥
  • 原文地址:https://www.cnblogs.com/dccmmtop/p/6708411.html
Copyright © 2011-2022 走看看