这个题目,唉,想复杂了,其实找下规律就会发现,很简单。只需要判断矩阵中每个数周围得数字个数加上它自己,如果是偶数的话,就还是朝上,如果是奇数的话,就会朝下;
以这个思路来走下面的步骤,可以找出规律:
首先,输入m和n,我们将小的值赋给m,大的值赋给n,有m<=n;
1.m=1,n=1时,一张牌朝下;
2.m=1的时候,n>=2,最开始和最后的那个数,周围的数加上自己是2,中间的数加上自己,都是3,所以一共有(n-2)张牌朝下;
3.2<=m<=n,四个角落的数周围的数加上自己是4,除这四个数之后最外面的一圈的数周围的数加上自己为6;剩下的所有的数都是9,所以一共有(m-2)*(m-2);
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); ArrayList<Integer> arrayList = new ArrayList<>(); for(int k=0;k<num;k++){ int n = scanner.nextInt(); int m = scanner.nextInt(); if(n<m){ int t = n; n=m; m=t; } if(m==1&&n==1){ arrayList.add(1); }else if(m==1){ arrayList.add(n-2); }else if(m>=2){ arrayList.add((m-2)*(n-2)); } } for(int i=0;i<arrayList.size();i++){ System.out.println(arrayList.get(i)); } } }
根本不需要去走一次循环就翻转一下数组里的数,还是题目练少了(~ ̄▽ ̄)~