小红正在玩一个拼图游戏,她有一些完全相同的拼图组件: 小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示: 小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。
区块链毕设网qklbishe.com为您提供问题的解答
小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:
小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示:
小红想知道,自己是否能按照给定的规则拼出图形?
请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。
模拟
public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); for (int i = 0; i < t; i++) { int n = in.nextInt(), m = in.nextInt(); int[][] nums = new int[n][m]; for (int j = 0; j < n; j++) { String str = in.next(); for (int k = 0; k < m; k++) { switch (str.charAt(k)) { case 'W' : nums[j][k] = 0; break; case 'D': nums[j][k] = 1; break; case 'S': nums[j][k] = 2; break; case 'A': nums[j][k] = 3; break; case '*': nums[j][k] = 4; break; } } } if (match(nums, n, m)) { System.out.println("Yes"); } else { System.out.println("No"); } } in.close(); } private static boolean match(int[][] nums, int n, int m) { // 每个元素仅需要和其右方及下方的元素判断即可 if (n == 1 && m == 1) { return true; } // 判断关系如下 // 右侧 // 0 - 1 // 1 - 1 // 2 - 1 // 3 - 0 || 3 - 2 || 3 - 3 // 下方 // 0 - 0 || 0 - 1 || 0 - 3 // 1 - 2 // 2 - 2 // 3 - 2 // 仅有一行 if (n == 1) { for (int j = 0; j < m - 1; j++) { int s = nums[0][j]; int l = nums[0][j + 1]; if ((s == 4 || l == 4) || (s == 0 && l == 1) || (s == 1 && l == 1) || (s == 2 && l == 1) || (s == 3 && l != 1)) { continue; } else { return false; } } return true; } // 仅有一列 if (m == 1) { for (int i = 0; i < n - 1; i++) { int s = nums[i][0]; int t = nums[i + 1][0]; if ((s == 4 || t == 4) || (s == 0 && t != 2) || (s == 1 && t == 2) || (s == 2 && t == 2) || (s == 3 && t == 2)) { continue; } else { return false; } } return true; } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < m - 1; j++) { int s = nums[i][j]; int l = nums[i][j + 1]; int t = nums[i + 1][j]; if (((s == 4 || l == 4) || (s == 0 && l == 1) || (s == 1 && l == 1) || (s == 2 && l == 1) || (s == 3 && l != 1)) && ((s == 4 || t == 4) || (s == 0 && t != 2) || (s == 1 && t == 2) || (s == 2 && t == 2) || (s == 3 && t == 2))) { continue; } else { return false; } } } return true; } }
29:43
以上就是关于问题小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:
小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示:
小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:
小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示:
小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:
小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示:
小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:
小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示:
小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小红正在玩一个拼图游戏,她有一些完全相同的拼图组件: 小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示: 小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。