| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 668 人关注过本帖
标题:帮忙给个算法 谢谢
只看楼主 加入收藏
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:9 
帮忙给个算法 谢谢
小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!
输入

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

输出

每个测试数据输出一行,每行只有一个整数,该整数为小兔从从起点(0,0)走到终点(n,n)不穿越对角线(但可接触对角线上的格点)的最短路劲数。

输入样例

1
3
12
-1

输出样例

2
10
416024
搜索更多相关主题的帖子: 算法 
2009-11-05 09:42
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:2 
#include "iostream"
using namespace std;
int main ()
{
  __int64 f[36][36];
  int i,j;
  int Case=1,n;
  memset(f,0,sizeof(f));
  for(i=1;i<36;i++)
    f[i][0]=f[0][i]=1;
  for(i=1;i<36;i++)
    for(j=1;j<36;j++)
    {
        if(i==j)
          f[i][j]=f[i-1][j];
        else
          f[i][j]=f[i-1][j]+f[i][j-1];
    }
  for(;scanf("%d",&n)!=EOF&&n!=-1;)
  {
    printf("%d %d %I64d\n",Case,n,f[n][n]*2);
    Case++;
  }
  return 1;
}
2009-11-05 10:01
fuqingjun
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:48
专家分:80
注 册:2009-11-2
收藏
得分:0 
我题目都没看懂。

我是猪猪,我很想进步,寻志同道合者革命途中并肩行路!
2009-11-05 10:28
fuqingjun
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:48
专家分:80
注 册:2009-11-2
收藏
得分:0 
回复 2楼 lijm1989
哥们,能跟我说他说的些啥吗?

我是猪猪,我很想进步,寻志同道合者革命途中并肩行路!
2009-11-05 10:28
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
你在做ACM??
2009-11-05 10:33
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
对啊!

学无止境!
2009-11-05 16:02
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
#include "iostream"
using namespace std;
这个我还没学过,讲解一下好吗?
可以用<stdio.h>做吗?

学无止境!
2009-11-05 16:04
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
这道题考的是递推,解释很难解释的···LZ hdu 这题前面比较简单的递推题能理解的话,这题就不在话下了···看下有关资料先吧···
2009-11-05 16:09
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:8 
一开始发的是我以前做HDU时留下来的,是C++编写的,我这有个这题的解题报告,LZ看看??报告中是用C语言写了的···
程序代码:
#include <stdio.h>
int main(void)
{
    int i, j;
    __int64 a[36] = {1};
    __int64 b[36] = {0};
    for (i = 1; i < 36; i++)
    {
        for (j = 1; j < i; j++)
            a[j] += a[j-1];
        b[i] = a[i] = a[i-1];
    }
    for (j = 1; scanf("%d", &i), i+1; j++)
        printf("%d %d %I64d\n",j, i, 2 * b[i]);   
    return 0;
}
HDU 2067.rar (6.77 KB)

2009-11-05 16:35
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
多谢!

学无止境!
2009-11-05 16:43
快速回复:帮忙给个算法 谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031255 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved