国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

【遞推】過河卒

2019-11-14 11:15:12
字體:
供稿:網(wǎng)友
【題目描述】

如圖,A 點有一個過河卒,需要走到目標(biāo) B 點。卒行走規(guī)則:可以向下、或者向右。同時在棋盤上的任一點有一個對方的馬(如上圖的C點),該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 C 點上的馬可以控制 9 個點(圖中的P1,P2 … P8 和 C)。卒不能通過對方馬的控制點。

【輸入】 鍵盤輸入B點的坐標(biāo)(n,m)以及對方馬的坐標(biāo)(X,Y){不用判錯}【輸出】 屏幕輸出 一個整數(shù)(路徑的條數(shù))。【樣例輸入】6 6 3 2【樣例輸出】17【AC代碼】

#include<iostream>#include<cstdio>    //用scanf(),PRintf()輸入輸出加快速度#include<cstring>    //cstring內(nèi)有memset()函數(shù)using namespace std;int a[9]={0,-1,-1,-2,-2,1,1,2,2};    //數(shù)組a[]存儲馬控制的橫坐標(biāo)范圍int b[9]={0,2,-2,1,-1,2,-2,1,-1};    //數(shù)組b[]存儲馬控制的縱坐標(biāo)范圍,注意相同下標(biāo)的a,b之間有一定的對應(yīng)關(guān)系,即除了(0,0)外|a|與|b|一個為1,另一個為2int n,m,x,y,i,j;int map[21][21];    //map[i][j]表示地圖上(i,j)這個點是否是馬的控制點long long tripnum[21][21];    //tripnum[i][j]表示從(0,0)到(i,j)卒合法的行走路線總數(shù)int main(){	memset(tripnum,0,sizeof(tripnum));	scanf("%d%d%d%d",&n,&m,&x,&y);	for(i=0;i<=20;i++)		for(j=0;j<=20;j++)			map[i][j]=1;    //map[i][j]為1時表示(i,j)非控制點	for(i=0;i<=8;i++)		if(x+a[i]<=20 && x+a[i]>=0 && y+b[i]<=20 && y+b[i]>=0)    //如果控制點在地圖范圍內(nèi),即這個點存在			map[x+a[i]][y+b[i]]=0;    //將其設(shè)為0,表示這里被馬控制	for(j=0;j<=20;j++)    //從左到右遍歷最上面一行的所有點		if(map[0][j]==1)    //如果這個點不是控制點			tripnum[0][j]=1;    //那么從(0,0)到達這個點的路線自然只有一條		else    //否則這點不可到達,路線數(shù)為初值0條			break;    //并且其右的點也不可達,不必繼續(xù)遍歷	for(i=0;i<=20;i++)    //從上到下遍歷最左邊一列的所有點		if(map[i][0]==1)    //如果這個點不是控制點			tripnum[i][0]=1;    //那么從(0,0)到達這個點的路線自然只有一條		else    //否則這點不可到達,路線數(shù)為初值0條			break;    //并且其下的點也不可達,不必繼續(xù)遍歷	for(i=1;i<=n;i++)    //從(1,1)這個點開始,逐行的去看(也可以逐列)		for(j=1;j<=m;j++)			if(map[i][j]==1)    //如果這個點不是控制點				tripnum[i][j]=tripnum[i-1][j]*map[i-1][j]+tripnum[i][j-1]*map[i][j-1];    //那么到達它的路線數(shù)等于其左的點路線與其上的點之和,由于其左與其上的點有可能是控制點,所以要乘以控制系數(shù)map[i][j](這也是為什么用0代表控制,而用1代表非控制,而不是調(diào)換過來的原因)	printf("%lld",tripnum[n][m]);return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 斗六市| 仪陇县| 金堂县| 金塔县| 海盐县| 磐石市| 三原县| 德昌县| 安义县| 玉林市| 汉寿县| 陇西县| 天柱县| 惠州市| 阳西县| 和龙市| 北流市| 安远县| 舞钢市| 大渡口区| 宁明县| 改则县| 新丰县| 科尔| 濉溪县| 行唐县| 新蔡县| 叶城县| 太仓市| 金川县| 蓬安县| 威远县| 栾川县| 泰州市| 高邮市| 射洪县| 施甸县| 洛川县| 观塘区| 灵丘县| 洞口县|