Java面向对象3(K~O)
阅读原文时间:2023年07月14日阅读:1

K     正方形(SDUT 2444)

import java.lang.reflect.Array;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        node s[] = new node[2000];
        // System.out.println(55);
        for (int k = 0; k < t; k++) {

            for (int i = 0; i < 4; i++) {
                s[i] = new node();
                s[i].x = sc.nextInt();
                s[i].y = sc.nextInt();
                // System.out.println(s[i].x + " " + s[i].y);
            }
            s[4] = new node();
            s[4].x = s[0].x;
            s[4].y = s[0].y;
            Sum p = new Sum(s);
            if (p.getAns() == 1) {
                System.out.print("YES\n");
            } else
                System.out.print("NO\n");
        }
        sc.close();
    }
}

class node {
    int x;
    int y;
}

class Sum {
    node s[] = new node[200];

    Sum(node s[]) {
        this.s = s;
    }

    int f1() {
        int f = 1;
        for (int i = 0; i < 3; i++) {
            int x = s[i].x - s[i + 1].x;
            int y = s[i].y - s[i + 1].y;
            int z = s[i + 1].x - s[i + 2].x;
            int w = s[i + 1].y - s[i + 2].y;
            if (x * x + y * y != z * z + w * w) {
                f = 0;
                break;
            }
        }
        return f;
    }

    int f2() {
        int f = 1;
        for (int i = 0; i < 3; i++) {
            int x = (s[i + 1].x - s[i].x) * (s[i + 2].x - s[i + 1].x);
            int y = (s[i + 1].y - s[i].y) * (s[i + 2].y - s[i + 1].y);
            if (x != -y) {
                f = 0;
                break;
            }
        }
        return f;
    }

    int getAns() {
        int flag1 = f1();
        int flag2 = f2();
        if (flag1 == 1 && flag2 == 1)
            return 1;
        else
            return 0;
    }
}

相似三角形(SDUT 2562)

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a[] = new int[10];
        while (sc.hasNext()) {
            for (int i = 0; i < 6; i++) {
                a[i] = sc.nextInt();
            }
            Node p = new Node(a);
            int ans = p.getAns();
            if (ans == 1)
                System.out.println("YES");
            else
                System.out.println("NO");
        }
    }
}

class Node {
    int a[] = new int[10];

    Node(int a[]) {
        this.a = a;
    }

    int getOk() {
        int f1 = 0;
        int f2 = 0;
        if (a[0] + a[1] > a[2] && a[0] + a[2] > a[1] && a[1] + a[2] > a[0])
            f1 = 1;
        if (a[3] + a[4] > a[5] && a[3] + a[5] > a[4] && a[4] + a[5] > a[3])
            f2 = 1;
        if (f1 == 1 && f2 == 1)
            return 1;
        else
            return 0;
    }

    int getAns() {
        if (getOk() == 1) {
            int f = 0;
            Arrays.sort(a, 0, 3);
            Arrays.sort(a, 3, 6);
            if ((a[0] * a[4] == a[1] * a[3]) && (a[0] * a[5] == a[2] * a[3]) && (a[1] * a[5] == a[2] * a[4]))
                f = 1;
            return f;
        } else
            return 0;
    }
}

N     手机键盘 (SDUT 2618)

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s[] = new String[10];
        s[2] = "abc0";s[3] = "def0";s[4] = "ghi0"; s[5] = "jkl0";
        s[6] = "mno0"; s[7] = "pqrs"; s[8] ="tuv0";s[9] = "wxyz";
        String str;
        while (sc.hasNext()) {
            str = sc.nextLine();
            Node p;
            p = new Node(s,str);
            int ans = p.getAns();
            System.out.println(ans);
        }

}
}

class Node {
    String str;
    String s[] = new String[10];
    Node(String s[], String str) {
        this.str = str;
        this.s = s;
    }
    int getAns()
    {
        int ans = 0,f = 0;
        int flag = 0;
        int i,j,k;
        int len = str.length();
        for( i = 0; i < len; i ++)
        {
            flag = 0;
            for( j = 2; j <= 9; j ++)
            {
                for( k = 0; k < 4; k ++)
                {
                    if(i == 0)
                    {
                        if(s[j].charAt(k) == str.charAt(i)) {
                            ans += k + 1;
                            f = j;
                            flag = 1;
                            break;
                        }
                    }
                    else {
                        if(s[j].charAt(k) == str.charAt(i))
                        {
                            if(f == j)ans += k + 3;
                            else {ans += k + 1;f = j;}
                            flag = 1;
                            break;
                        }
                    }
                }
                if(flag == 1) break;
            }
        }
        return ans;
    }
}

2-2 Time类的定义 (SDUT 2669)

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int H,M,S;
        H = sc.nextInt();
        M = sc.nextInt();
        S = sc.nextInt();
        Time t = new Time(H,M,S);
        t.prit();
    }
}

class Time
{
    int h,m,s;
    Time(int H, int M, int S)
    {
        h = H;
        m = M;
        s = S;
    }
    void setH()
    {
        if(h > 12 || h < 0) h = 12;
    }
    void setM()
    {
        if(m > 60 || m < 0) m = 0;
    }
    void setS()
    {
        if(s > 60 || s < 0) s = 0;
    }
    void prit()
    {
        setH();setM();setS();
        System.out.printf("%02d:%02d:%02d\n", h,m,s);
    }
}