小红正在玩一个拼图游戏,她有一些完全相同的拼图组件: 小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示: 小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。

区块链毕设网qklbishe.com为您提供问题的解答

小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:
小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:   	     	小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符'W'表示,旋转90度用字符'D'表示,旋转180度用字符'S'表示,旋转270度用字符'A'表示:   	     	小红想知道,自己是否能按照给定的规则拼出图形?   	请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和"凹凹"的相邻都是不合法的。
小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转90度、180度、270度变成不同的形态。我们定义旋转0度用字符’W’表示,旋转90度用字符’D’表示,旋转180度用字符’S’表示,旋转270度用字符’A’表示:
小红正在玩一个拼图游戏,她有一些完全相同的拼图组件:   	     	小红准备用这些组件来拼成一些图案。这些组件可以通过顺时针旋转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’表示: 小红想知道,自己是否能按照给定的规则拼出图形? 请注意:若两个组件相邻,那么必须凹进去的和凸出来的完美契合!“凸凸”和”凹凹”的相邻都是不合法的。