HDU 2607 小兔的棋盘
2014-02-20 23:26
197 查看
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2067
题解:
可先只考虑棋盘的一半,左下右上对角线的下半部分,a[i][j]为原点到(i,j)的路径数,如果i==j,既对角上的点,只能从下方来,既a[i][j]=a[i-1][j]
非对角线上的点可从左边或者下方来,既a[i][j]=a[i-1][j]+a[i][j-1]
代码:
#include<stdio.h>
_int64 a[36][36];
int n;
void solve(int n)
{
int i,j;
a[0][0]=1;
for(i=0,j=1;j<=n;j++)
{
a[i][j]=1;
}
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(i==j) a[i][j]=a[i-1][j];
else a[i][j]=a[i-1][j]+a[i][j-1];
}
}
}
int main()
{
int sum=0;
while(scanf("%d",&n),n!=-1)
{
sum++;
solve(n);
printf("%d %d %I64d\n",sum,n,2*a
);
}
return 0;
}
http://acm.hdu.edu.cn/showproblem.php?pid=2067
题解:
可先只考虑棋盘的一半,左下右上对角线的下半部分,a[i][j]为原点到(i,j)的路径数,如果i==j,既对角上的点,只能从下方来,既a[i][j]=a[i-1][j]
非对角线上的点可从左边或者下方来,既a[i][j]=a[i-1][j]+a[i][j-1]
代码:
#include<stdio.h>
_int64 a[36][36];
int n;
void solve(int n)
{
int i,j;
a[0][0]=1;
for(i=0,j=1;j<=n;j++)
{
a[i][j]=1;
}
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(i==j) a[i][j]=a[i-1][j];
else a[i][j]=a[i-1][j]+a[i][j-1];
}
}
}
int main()
{
int sum=0;
while(scanf("%d",&n),n!=-1)
{
sum++;
solve(n);
printf("%d %d %I64d\n",sum,n,2*a
);
}
return 0;
}
相关文章推荐
- ocos2d-x Win32下的节点缩放原理研究心得
- C#子窗体运行时无法正常最大化的解决办法
- MySQL5.5.28启动错误 The server quit without updating PID file
- iOS 常用第三方库
- sizeof操作符分析
- cocos2dx2.2移植到Android
- Microsoft.Crm.Setup.SrsDataConector.RegisterServerAction 操作失败 Requested value 'Geo' was not found 的解决方法
- 线段树好题(2004集训队林涛PPT中的3题)
- PHP中spl_autoload_register函数的用法
- db2 性能优化
- Java中关于HashMap的元素遍历的顺序问题
- How to Install CodeIgniter on an Ubuntu 12.04 Cloud Server
- 奋斗2014
- ADB server didn't ACK 解决方法
- 数据库的优化需要
- iOS 同步请求 异步请求 GET请求 POST请求
- PHP 5.4.8 添加系统服务命令
- jenkins + git+maven做持续集成
- 测试出系统的软件配置环境和系统编码格式
- JSON.parse()和JSON.stringify() .