題目:
一間公司的倉庫守衛工作時間一天為九小時,一共聘請了六名工,同一時間必須有兩人看守。
試問一人一天的休息時間?
說明:
這是一題國小五年級的數學題目,話說當時看到還霧煞煞勒,此題正解為
總工作時間是 9 * 2 = 18 hours
有六人去分擔這些時間,所以 18/6=3,每人每天必須工作 3 hours
最後每人休息時間是 9-3=6 hours。
原本以為可以去看看如果這六位員工去排班會是怎樣的,所以寫了一些程式碼想要去跑
但是不知道怎樣才會有效率,只用了 Random 然後判斷一直重複猜數字。
RandomArray.java
import java.util.Scanner;
import java.util.Random;
public class RandomArray{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("Input Rows ans Cols:");
int m = scanner.nextInt();
int n = scanner.nextInt();
boolean play = false;
while(play != true){
Matrix a = new Matrix(m, n);
a.setMatrix();
a.getMatrix();
play = a.check();
}
}
}
##CONTINUE##
class Matrix{
private int value;
private int rows;
private int cols;
private int[][] storage;
Random random = new Random();
public Matrix(){
}
public Matrix(int rows, int cols){
this.rows = rows;
this.cols = cols;
storage = new int[rows][cols];
}
public void randomValue(){
value = random.nextInt(2);
}
public void setMatrix(){
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
randomValue();
storage[i][j] = value;
}
}
}
public void getMatrix(){
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
System.out.print(storage[i][j] + " ");
}
System.out.println();
}
}
public boolean check(){
int rowsum = 0;
int colsum = 0;
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
rowsum += storage[i][j];
}
if(rowsum != 3){
return false;
}
rowsum = 0;
}
for(int i = 0; i < cols; i++){
for(int j = 0; j < rows; j++){
colsum += storage[j][i];
}
if(colsum != 2){
return false;
}
colsum = 0;
}
return true;
}
}
以上我用過一組解去跑是可以判斷正確的,但是改用隨機呢那就...
說說回來這真的很難讓電腦去猜,因為Array[6][9]有54數字,一共有2的54次方種配法,
天啊~要用哪一個方式去改進呢?資料結構有說嗎?哈哈......(啃書去=..=) :)
沒有留言:
張貼留言