赞
踩
第一题是很常规的总的路径数目统计问题 OpenJ_Bailian - 4123
题意:
给定一个大小为m*n的棋盘以及“马”的初始位置,计算“马”通过走日字形遍历棋盘上所有点(每个点只能遍历一次)有多少种不同的方法。
思路:
很常规的深搜,用vis数组标记后DFS即可
#include <bits/stdc++.h> #include <iostream> #define ll long long #define mem( f, x ) memset( f, x, sizeof(f)) #define INF 0x3f3f3f3f #define pii pair<int, int> #define mk( x, y ) make_pair( x, y ) #define fi first #define se second using namespace std; const int M = 12; const int N = 12; int m, n; bool vis[N][N]; int dir[8][2] = { { 1, 2}, { -1, 2}, { 2, 1}, { -2, 1}, { 2, -1}, { -2, -1}, { 1, -2}, { -1, -2} }; int ans = 0; bool judge( int x, int y ){ if( x >= 0 && y >= 0 && x < m && y < n && !vis[x][y] ) return 1; return 0; } void dfs( int x, int y, int step ){ if
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。