zoukankan      html  css  js  c++  java
  • Java面向对象2(G~J)

    G    织女的红线(SDUT 2240)

    import java.util.Scanner;
    import java.text.DecimalFormat;
    
    class Sum {
    	double x1, y1, x2, y2;
    
    	Sum(double n1, double m1, double n2, double m2) {
    		x1 = n1;
    		x2 = n2;
    		y1 = m1;
    		y2 = m2;
    	}
    
    	double getAns() {
    		double ans = 0;
    		ans = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
    		ans = Math.sqrt(ans);
    		return ans;
    	}
    }
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		DecimalFormat df = new DecimalFormat(".00");
    		int t, r;
    		double ans = 0;
    		double x[] = new double[200];
    		double y[] = new double[200];
    		t = sc.nextInt();
    		r = sc.nextInt();
    		for (int i = 1; i <= t; i++) {
    			x[i] = sc.nextDouble();
    			y[i] = sc.nextDouble();
    		}
    		x[t + 1] = x[1];
    		y[t + 1] = y[1];
    		Sum p;
    		for (int i = 1; i <= t; i++) {
    			p = new Sum(x[i], y[i], x[i + 1], y[i + 1]);
    			ans += p.getAns();
    		}
    		ans += 2 * r * 3.1415926;
    		System.out.println(df.format(ans));
    	}
    }
    

    H     分数加减法(SDUT 2253)

    import java.util.Scanner;
    import java.text.DecimalFormat;
    
    class Sum {
    	int x1, y1, x2, y2;
    	char str;
    
    	Sum(int n1, int m1, int n2, int m2, char op) {
    		x1 = n1;
    		x2 = n2;
    		y1 = m1;
    		y2 = m2;
    		str = op;
    	}
    
    	int getGcd(int a, int b) {
    		int n = a, m = b;
    		while (m > 0) {
    			int x = n;
    			n = m;
    			m = x % m;
    		}
    		return n;
    	}
    
    	void getAns() {
    		int x = getGcd(y1, y2);
    		int a, b, c, d, ans1, ans2;
    		a = x1;
    		b = y1;
    		c = x2;
    		d = y2;
    		int lcm = b * d / x;
    		a = a * d / x;
    		c = c * b / x;
    		if (str == '+')
    			ans1 = a + c;
    		else
    			ans1 = a - c;
    		ans2 = lcm;
    		if (ans1 < 0)
    			x = -ans1;
    		else
    			x = ans1;
    		x = getGcd(x, ans2);
    		if (ans1 % x == 0 && ans2 % x == 0) {
    			ans1 /= x;
    			ans2 /= x;
    		}
    		if (ans1 == 0 && ans1 != ans2 || ans2 == 1)
    			System.out.println(ans1);
    		else if (ans1 == ans2)
    			System.out.println(1);
    		else
    			System.out.println(ans1 + "/" + ans2);
    	}
    }
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		// DecimalFormat df = new DecimalFormat(".00");
    		Sum p;
    		String s;
    		char op;
    		while (sc.hasNext()) {
    			s = sc.next();
    			// System.out.println(s);
    			int x1 = s.charAt(0) - '0';
    			int y1 = s.charAt(2) - '0';
    			op = s.charAt(3);
    			int x2 = s.charAt(4) - '0';
    			int y2 = s.charAt(6) - '0';
    			// System.out.println(x1 + " " + y1 + " " + x2 + " " + y2 + " " + op);
    			p = new Sum(x1, y1, x2, y2, op);
    			p.getAns();
    		}
    	}
    }
    

    高中数学?(SDUT 2400)

    import java.util.*;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int t = sc.nextInt();
    		for (int i = 0; i < t; i++) {
    			int n = sc.nextInt();
    			Sum p = new Sum(n);
    			int ans = p.getAns(n);
    			System.out.println(ans);
    		}
    		sc.close();
    	}
    }
    
    class Sum {
    	int a[] = new int[55];
    	int n;
    
    	public Sum(int n) {
    		a[1] = 0;
    		a[2] = 1;
    		for (int i = 3; i <= 50; i++) {
    			a[i] = 4 * a[i - 1] - 5 * a[i - 2];
    		}
    		this.n = n;
    	}
    
    	public int getAns(int n) {
    		return a[n];
    	}
    }

    最大矩形面积(SDUT 2401)

    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();
    		int n,l,w;
    		node s[] = new node[2000];
    		for (int i = 0; i < t; i++) {
    			l = sc.nextInt();
    			w = sc.nextInt();
    			n = sc.nextInt();
    			for(int j = 0; j < n; j ++)
    			{
    				s[j] = new node();
    				s[j].x = sc.nextInt();
    				s[j].y = sc.nextInt();
    			}
    			//Arrays.sort(s,0,n,new cmp());
    			Sum p = new Sum(l,w,n,s);
    			if(n == 0)
    				System.out.println(l * w);
    			else 
    				System.out.println(p.getAns());
    		}
    		sc.close();
    	}
    }
    
    class node
    {
    	int x;
    	int y;
    }
    class cmp implements Comparator<node>
    {
    	public int compare(node a, node b)
    	{
    		if(a.x - b.x != 0) return a.x - b.x;
    		else return a.y - b.y;
    	}
    }
    class cmp1 implements Comparator<node>
    {
    	public int compare(node a, node b)
    	{
    		if(a.y - b.y != 0) return a.y - b.y;
    		else return a.x - b.x;
    	}
    }
    class Sum {
    	int l,w,n;
    	node s[] = new node[2000];
    	Sum(int l, int w, int n, node s[])
    	{
    		this.l = l;
    		this.w = w;
    		this.n = n;
    		this.s = s;
    	}
    	int max(int a, int b)
    	{
    		if(a >= b) return a;
    		else return b;
    	}
    	int min(int a, int b)
    	{
    		if(a >= b) return b;
    		else return a;
    	}
    	int getAns1()
    	{
    			Arrays.sort(s,0,n,new cmp1());
    		 	int i,j,ans1;
    		    ans1 = 0;
    		    for (i = 0; i < n; ++i)
    		    {
    		        int L = 0, R = l;
    		        for (j = i + 1; j < n; ++j)
    		        {
    		            if (s[i].y != s[j].y)
    		            {
    		                ans1 = max(ans1,(s[j].y - s[i].y)*(R - L));
    		                if (s[j].x > s[i].x)  R = min(R,s[j].x);
    		                else   L = max(L,s[j].x);
    		            }
    		        }
    		    }
    		    return ans1;
    	}
    	int getAns2()
    	{
    		Arrays.sort(s,0,n,new cmp());
    		  int i,j,ans2;
    		    ans2 = 0;
    		    for (i = 0; i < n; ++i)
    		    {
    		        int top = w, down = 0;
    		        for (j = i + 1; j < n; ++j)
    		        {
    		            if (s[i].x != s[j].x)
    		            {
    		                ans2 = max(ans2,(s[j].x - s[i].x)*(top - down));
    		                if (s[j].y > s[i].y)  top =  min(top,s[j].y);
    		                else  down = max(down,s[j].y);
    		            }
    		        }
    		    }
    		    return ans2;
    	}
    	int getAns()
    	{
    		int ans,ans1,ans2;
    		ans1 = getAns1();
    		ans2 = getAns2();
    		ans = max(ans1,ans2);
    		return ans;
    	}
    }
  • 相关阅读:
    Java——enum与int的转换——转载
    Java——JScrollPane设置透明——转载
    Java——JFrame与JButton添加背景
    Java——模态对话框
    u-boot_2010.6 nandflash驱动彻底分析
    linux 常用命令整理----权限管理
    linux 常用命令整理----链接文件
    linux 常用命令整理----文件操作
    linux 常用命令整理----目录操作
    linux 进程运行状态
  • 原文地址:https://www.cnblogs.com/lcchy/p/10139484.html
Copyright © 2011-2022 走看看