4.24周练题解

简介: 4.24周练题解

1.诸葛亮的排列组合

看成正方形的四个角,旋转三次,直接暴力枚举四种状态,一一对应

import java.util.Scanner;
public class A1 {
  public static void main(String[] args) {
    int a[][]=new int [5][5];
    int b[][]=new int [5][5];
    Scanner sc=new Scanner(System.in);
    int t,k=1;
    t=sc.nextInt();
      while(k<=t){
        for (int k2 = 1; k2 <= 2; k2++) {
          for (int l = 1; l <=2; l++) {
            a[k2][l]=sc.nextInt();
          }
        }
        for (int k2 = 1; k2 <= 2; k2++) {
          for (int l = 1; l <=2; l++) {
            b[k2][l]=sc.nextInt();
          }
        }
        int flag=0;
        if(a[1][1]==b[1][1]&&a[1][2]==b[1][2]&&a[2][1]==b[2][1]&&a[2][2]==b[2][2])flag=1;
        else if(a[1][1]==b[1][2]&&a[1][2]==b[2][2]&&a[2][1]==b[1][1]&&a[2][2]==b[2][1])flag=1;
        else if(a[1][1]==b[2][2]&&a[1][2]==b[2][1]&&a[2][1]==b[1][2]&&a[2][2]==b[1][1])flag=1;
        else if(a[1][1]==b[2][1]&&a[1][2]==b[1][1]&&a[2][1]==b[2][2]&&a[2][2]==b[1][2])flag=1;
        if(flag==1){
          System.out.println("Case #"+k+": "+"POSSIBLE");
        }
        else{
          System.out.println("Case #"+k+": "+"IMPOSSIBLE");
        }
        k++;
      }
    }
}

2.华佗的药瓶,水题

import java.util.Scanner;
public class B {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int t=sc.nextInt();
    int k=0;
    while(++k<=t) {
      int n=sc.nextInt();
      int m=2*n-1;
      System.out.println("Case #"+k+": "+m);
    }
  }
}

3.水题

两个数组的对照,下标找对就行了

import java.util.Scanner;
public class C {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();
    int k=0;
    while(++k<=t) {
      int n=sc.nextInt();
      int m=sc.nextInt();
      int p=sc.nextInt();
      int a[]=new int [n];
      int b[]=new int [m];
      for (int i = 0; i < a.length; i++) 
        a[i]=sc.nextInt();
      for (int i = 0; i < b.length; i++) 
        b[i]=sc.nextInt();
      int q=n-(m-1)*p;
      int s1=0;
      for (int i = 0; i < q; i++) {
        int num=0;
        for (int j = 0; j < b.length ; j++) {
          //是否对应
          if(b[j]==a[i+j*p] && i+j*p<a.length)
            num++;
        }
        //如果全部对应
        if(num==b.length) {s1++;}
      }
      System.out.println("Case #"+k+": "+s1);
    }
  }
}
相关文章
|
11月前
第46期题解
第46期题解
|
3月前
|
算法
leetcode4题解
leetcode4题解
21 0
|
11月前
|
数据安全/隐私保护
[UTCTF2020]babymips 题解
[UTCTF2020]babymips 题解
53 1
|
11月前
|
数据安全/隐私保护
[FlareOn5]FLEGGO 题解
[FlareOn5]FLEGGO 题解
41 1
|
11月前
|
数据安全/隐私保护
[FlareOn6]Overlong 题解
[FlareOn6]Overlong 题解
80 0
|
11月前
|
数据安全/隐私保护
CrackRTF 题解
CrackRTF 题解
45 0
|
10月前
Leetcode contests 95 题解
用容斥原理可以计算出一个数字Num之下有多少个A或B的倍数cnt,我们从最大值二分这个数字Num,拿cnt和N做比较来决定二分的走向,最终l和r肯定会收敛到一起,这就是我们要的结果了。 这道题的数值范围不是特别大 ,用long就可以完全满足需求了。
21 0
|
算法
rsarsa题解
rsarsa题解
124 0
rsarsa题解
|
C语言 数据安全/隐私保护
easyre题解
easyre题解
116 0
easyre题解