附上网址!
https://vijos.org/p/1121
#include<iostream>
using namespace std;
int recursion(int x,int y);
int bx,by,mx,my,s=0;
int map[21][21]={0};
int main()
{
cin>>bx>>by>>mx>>my;
for(int i=0;i<=bx;i++)
{
for(int j=0;j<=by;j++)
{
map[i][j]=1;
}
}
map[0][0]=0;
map[my][mx]=0;
map[my-1][mx-2]=0;
map[my-1][mx+2]=0;
map[my-2][mx-1]=0;
map[my-2][mx+1]=0;
map[my+1][mx-2]=0;
map[my+1][mx+2]=0;
map[my+2][mx-1]=0;
map[my+2][mx+1]=0;
recursion(0,0);
cout<<s<<endl;
return 0;
}
int recursion(int x,int y)
{
if(x==bx&&y==by) s=s+1;
else
{
if(map[x][y+1]==1) recursion(x,y+1);
if(map[x+1][y]==1) recursion(x+1,y);
}
return s;
}
c++ P1121 马拦过河卒 viojs上面的题目 求解 不明白我向前递归为什么一直过不了
答案:3 悬赏:30 手机版
解决时间 2021-02-10 23:42
- 提问者网友:那叫心脏的地方装的都是你
- 2021-02-10 15:24
最佳答案
- 五星知识达人网友:野味小生
- 2021-02-10 16:44
可以问楼主一个算法的问题吗?这段代码封装是用于发送数据报的一小段,以下是正确代码,让我困惑的是return P - (char*)buf;这句话的实际含义,如果是我我会return P;请问P已经等于了缓存区buf这不仅让我思考一个问题如果缓存区减缓存区所表达的意思是什么?是不是在发送的过程中指针P是在不断向后面移位的而缓存区buf指针始终保持第一位也就是说象征索引0的位置那么结果就是发出的数据包总和减去的是0,返回的是总共发出的数据,我不知道我理解的是否正确,请详解最后一句话
int C我的套接字::分段发送(SOCKET S, const char *buf, int bytes){
const char *P = buf;
while (bytes>0)
{
int r = send(S, P, bytes, 0);
if (r<0)
{
return r;
}
else if (r==0)
{
break;
}
bytes -= r;
P += r;
}
return P - (char*)buf;
}
int C我的套接字::分段发送(SOCKET S, const char *buf, int bytes){
const char *P = buf;
while (bytes>0)
{
int r = send(S, P, bytes, 0);
if (r<0)
{
return r;
}
else if (r==0)
{
break;
}
bytes -= r;
P += r;
}
return P - (char*)buf;
}
全部回答
- 1楼网友:玩家
- 2021-02-10 17:52
有两个问题
1.少了一个终止条件,int recursion(int x,int y)
{
if(x>bx || y>by){
return s;
}
if(x==bx&&y==by) s=s+1;
else
{
if(map[x][y+1]==1) recursion(x,y+1);
if(map[x+1][y]==1) recursion(x+1,y);
}
return s;
}
2.map[my-1][mx-2]如果mx=1就会报错。
- 2楼网友:我住北渡口
- 2021-02-10 17:35
有两个问题
1.少了一个终止条件,int recursion(int x,int y)
{
if(x>bx || y>by){
return s;
}
if(x==bx&&y==by) s=s+1;
else
{
if(map[x][y+1]==1) recursion(x,y+1);
if(map[x+1][y]==1) recursion(x+1,y);
}
return s;
}
2.map[my-1][mx-2]如果mx=1就会报错。
再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯