CodeForces-50A-Domino piling

A. Domino piling
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given a rectangular board of M × N squares. Also you are given an unlimited number of standard domino pieces of 2 × 1 squares. You are allowed to rotate the pieces. You are asked to place as many dominoes as possible on the board so as to meet the following conditions:

1. Each domino completely covers two squares.

2. No two dominoes overlap.

3. Each domino lies entirely inside the board. It is allowed to touch the edges of the board.

Find the maximum number of dominoes, which can be placed under these restrictions.

Input

In a single line you are given two integers M and N — board sizes in squares (1 ≤ M ≤ N ≤ 16).

Output

Output one number — the maximal number of dominoes, which can be placed.

Sample test(s)
input
2 4
output
4
input
3 3
output
4

import java.util.*;

public class DominoPiling {
	public static void main(String[] args) {
		Scanner inScanner = new Scanner(System.in);
		int m = 0, n = 0;
		int count = 0;
		m = inScanner.nextInt();
		n = inScanner.nextInt();
		if (m * n < 2)
			count=0;
		else if (n == 1) {
			count += (m / 2);// downward
		} else {

			int npart = n / 2;
			count += (npart * m);
			if(n%2==1){
				count+=(m/2);// downward
			}
		}
		System.out.println(count);
	}

}
最先寫完發現過於麻煩,後經過改進後重寫
import java.util.*;

public class DominoPilingPro {
	public static void main(String[] args) {
		Scanner inScanner = new Scanner(System.in);
		int m=inScanner.nextInt();
		int n=inScanner.nextInt();
		if(n%2==0){
			System.out.println(m*n/2);
		}
		else {
			System.out.println(m*n/2+m/2);
		}
	}
}
多餘的過程在於對邊長的判斷。其實,在運用“/”進行除法運算的過程中,整數相除採用了向下取證的方法,因此當邊長不及多米諾牌長時,會出現除數比被除數大的情況,因而結果會取0,不需要在開頭進行繁雜判斷。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章