状态: Unaccepted
测评机: Xeond[6]
得分: 60分
提交日期: 2013-8-4 15:10:00
有效耗时: 405毫秒
测试结果1: 通过本测试点|有效耗时156ms
测试结果2: 通过本测试点|有效耗时47ms
测试结果3: 测试结果错误.错误结果为:642789722 正确结果应为:56477364570
测试结果4: 测试结果错误.错误结果为:-2091005866 正确结果应为:2203961430
测试结果5: 通过本测试点|有效耗时47ms
测试结果6: 通过本测试点|有效耗时46ms
测试结果7: 通过本测试点|有效耗时47ms
测试结果8: 测试结果错误.错误结果为:642789722 正确结果应为:56477364570
测试结果9: 测试结果错误.错误结果为:-2091005866 正确结果应为:2203961430
测试结果10: 通过本测试点|有效耗时62ms
/*
* http://www.rqnoj.cn/Problem_69.html
* 题目:过河卒
* 完成时间:70min(借鉴书上的边界处理内容)
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int n,m,x,y;
int i,j,k;
int horse_x[9] = {0,1,1,-1,-1,2,2,-2,-2};
int horse_y[9] = {0,2,-2,2,-2,1,-1,1,-1};
scanf("%d %d %d %d",&n,&m,&x,&y);
n++,m++;
/* 初始化棋盘 */
int chess[30][30];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
chess[i][j] = 0;
/* 标志马的控制点 */
for(i=0;i<9;i++)
{
int xx = x+horse_x[i],yy = y+horse_y[i];
if(xx >= 0 && xx < n && yy >= 0 && yy < m) chess[xx][yy] = 1;
}
long long f[30][30];
f[0][0] = 1;
for(i=1;i<n;i++)
{
if(chess[i][0] == 0)
f[i][0] = f[i-1][0];
}
for(j=1;j<m;j++)
{
if(chess[0][j] == 0)
f[0][j] = f[0][j-1];
}
for(i=1;i<n;i++)
{
for(j=1;j<m;j++)
{
if(chess[i][j])
{
f[i][j] = 0;
}
else
{
f[i][j] = f[i-1][j] + f[i][j-1];
}
}
}
printf("%lld",f[n-1][m-1]);
}
你用C++试试?
前面加个
#include<iostream>
输出换成
std::cout<<f[n-1][m-1]<<"\n";
要没问题就说明你的输出部分有错...那我不知道怎么办了
要有问题说明你输出以前就有错