只有我记得,琉璃百合的露水几点出现,又在几点消失。 |

小坦js

园龄:2年8个月粉丝:17关注:9

2022-08-21 21:00阅读: 307评论: 0推荐: 0

马走日(题解)

马走日

题目描述:

马在中国象棋以日字形规则移动。
请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。
【输入】
第一行为整数T(T < 10),表示测试数据组数。
每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0≤x≤n-1,0≤y≤m-1, m < 10, n < 10)。
【输出】
每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。
样例输入:
1
5 4 0 0
样例输出:
32
 
分析:
此题可以使用深度优先搜索(DFS)进行走棋模拟。
对于如何走日字型,可以用到“方向数组”,一个(dx[])控制x坐标变化,一个(dy[])控制y坐标变化。然后在对应(下标相同的)位置写上数字,使dx[i]+dy[i]正好能实现一个日字走棋:
int dx[]={-2,-1,1,2,2,1,-1,2};
int dy[]={1,2,2,1,-1,-2,-2,-1};
 
接下来就是DFS阶段了:
void dfs(int x,int y,int s){//x,y表示起始位置,s表示步数
	if(s==n*m){//s为n*m则表示走过了全部的格子(步数=格数)
		ans++;
		return ;
	}
	for(int i=0;i<8;i++){
		int xx=x+dx[i];
		int yy=y+dy[i]; //走一步
		if(xx>=0&&xx<n&&yy>=0&&yy<m&&(vis[xx][yy]==false)){//不越界且不重叠
			vis[xx][yy]=true;//标记走过的
			dfs(xx,yy,s+1);//从当前步继续往后看,步数要加1
			vis[xx][yy]=false;//回溯。
		}
	}
}
关于DFS的原理,上述注释已给出解释,至于深搜的相关实现方法在此不在赘述。可参考此文章:基础搜索
 
最后加上主函数便完成了:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=15;
bool vis[N][N];
int t,n,m,x,y,ans=0;
int dx[]={-2,-1,1,2,2,1,-1,-2};
int dy[]={1,2,2,1,-1,-2,-2,-1};
void dfs(int x,int y,int s){//x,y表示起始位置,s表示步数
	if(s==n*m){//s为n*m则表示走过了全部的格子(步数=格数)
		ans++;
		return ;
	}
	for(int i=0;i<8;i++){
		int xx=x+dx[i];
		int yy=y+dy[i]; //走一步
		if(xx>=0&&xx<n&&yy>=0&&yy<m&&(vis[xx][yy]==false)){//不越界且不重叠
			vis[xx][yy]=true;//标记走过的
			dfs(xx,yy,s+1);//从当前步继续往后看,步数要加1
			vis[xx][yy]=false;//回溯。
		}
	}
}

int main(){
	cin>>t;
	while(t--){
		ans=0;
		memset(vis,false,sizeof vis);
		cin>>n>>m>>x>>y;
		vis[x][y]=true;//起点被标为true.
		dfs(x,y,1);
		cout<<ans<<endl;
	}
	return 0;
}

 

本文作者:小坦js

本文链接:https://www.cnblogs.com/xiaotan-js/p/16610877.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   小坦js  阅读(307)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 让风告诉你 花玲,喵☆酱,宴宁,kinsen
  2. 2 Rex Incognito 尘世闲游 陈致逸,HOYO-MiX
  3. 3 君がいる世界へ 鹿乃
  4. 4 Lemon 米津玄师
  5. 5 打上花火 DAOKO,米津玄师
  6. 6 ちいさな冒険者 雨宮天,高橋李依,茅野愛衣
  7. 7 おうちに帰りたい 雨宮天,高橋李依,茅野愛衣
  8. 8 ひまわりの約束 高橋李依
  9. 9 キセキ 高橋李依
  10. 10 高橋李依
  11. 11 Stay Alive 高橋李依
  12. 12 Believe in you nonoc
  13. 13 101匹目の羊 雨宮天,高橋李依,茅野愛衣
  14. 14 Wishing 水瀬いのり
  15. 15 動く、動く 水瀬いのり
  16. 16 夜に駆ける YOASOBI
  17. 17 群青 YOASOBI
  18. 18 優しい彗星 YOASOBI
  19. 19 もしも命が描けたら YOASOBI
  20. 20 アンコール YOASOBI
  21. 21 あの夢をなぞって YOASOBI
  22. 22 灰色と青 米津玄師,菅田将晖
  23. 23 砂の惑星 米津玄師,初音ミク
  24. 24 Flamingo 米津玄師
  25. 25 海の幽霊 米津玄師
  26. 26 紅蓮華(多多poi版!!) 多多poi
  27. 27 心做し(原唱版) 一之瀬ユウ,GUMI
  28. 28 sweets parade 花澤香菜
  29. 29 恋愛サーキュレーション(恋爱循环) 花澤香菜
  30. 30 はじめましての気持ちを Daoko,神山羊
  31. 31 つくりましょう! 金田朋子,松岡由貴,樋口智恵子
  32. 32 彼女は旅に出る 鎖那
  33. 33 ひとり旅 (feat. 鎖那) 瀬名航,鎖那
  34. 34 ハロ/ハワユ 鹿乃
  35. 35 心拍数#0822 鹿乃
  36. 36 KING kanaria,GUMI
  37. 37 Daydream cafe Petit Rabbit's
  38. 38 Adrenaline!!! (TV Ver) TrySail
  39. 39 ヒトリゴト (TV Size) Claris
  40. 40 ヒトリゴト(完整版) Claris
  41. 41 千本桜 初音ミク
  42. 42 大喜 泠鸢yousa,音阙诗听
  43. 43 勾指起誓 泠鸢yousa
  44. 44 还是你的笑容最可爱 音阙诗听,泠鸢yousa,王梓钰
  45. 45 与你有关 泠鸢yousa
  46. 46 吉祥話 Hanser,泠鸢yousa,祖娅纳惜,鹿乃
  47. 47 神のまにまに 初音ミク,鏡音リン,GUMI,れるりり
  48. 48 気ままな天使たち わたてん☆5
  49. 49 DEAREST DROP 田所あずさ
  50. 50 フロム (TV size) TRUE
  51. 51 恋のうた (feat. 由崎司) Yunomi,鬼頭明里
  52. 52 INSIDE IDENTITY Black Raison d'être
  53. 53 summertime cinnamons,evening cinema
Lemon - 米津玄师
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 米津玄師

作曲 : 米津玄師

编曲 : 米津玄師/室屋光一郎

夢ならばどれほどよかったでしょう

未だにあなたのことを夢にみる

忘れた物を取りに帰るように

古びた思い出の埃を払う

戻らない幸せがあることを

最後にあなたが教えてくれた

言えずに隠してた昏い過去も

あなたがいなきゃ永遠に昏いまま

きっともうこれ以上 傷つくことなど

ありはしないとわかっている

あの日の悲しみさえ

あの日の苦しみさえ

そのすべてを愛してた あなたとともに

胸に残り離れない

苦いレモンの匂い

雨が降り止むまでは帰れない

今でもあなたはわたしの光

暗闇であなたの背をなぞった

その輪郭を鮮明に覚えている

受け止めきれないものと出会うたび

溢れてやまないのは涙だけ

何をしていたの

何を見ていたの

わたしの知らない横顔で

どこかであなたが今

わたしと同じ様な

涙にくれ 淋しさの中にいるなら

わたしのことなどどうか 忘れてください

そんなことを心から願うほどに

今でもあなたはわたしの光

自分が思うより 恋をしていたあなたに

あれから思うように 息ができない

あんなに側にいたのにまるで嘘みたい

とても忘れられないそれだけが確か

あの日の悲しみさえ

あの日の苦しみさえ

その全てを愛してたあなたと共に

胸に残り離れない

苦いレモンの匂い

雨が降り止むまでは帰れない

切り分けた果実の片方の様に

今でもあなたはわたしの光