1. 程式人生 > >JavaStudy——0084:細菌的繁殖與擴散

JavaStudy——0084:細菌的繁殖與擴散

總時間限制: 1000ms 記憶體限制: 65536kB
描述
在邊長為9的正方形培養皿中,正中心位置有m個細菌。假設細菌的壽命僅一天,但每天可繁殖10個後代,而且這10個後代,有兩個分佈在原來的單元格中,其餘的均勻分佈在其四周相鄰的八個單元格中。求經過n(1≤n≤4)天后,細菌在培養皿中的分佈情況。

輸入
輸入為兩個整數,第一個整數m表示中心位置細菌的個數(2 ≤ m ≤ 30),第二個整數n表示經過的天數(1 ≤ n ≤ 4)。
輸出
輸出九行九列整數矩陣,每行的整數之間用空格分隔。整個矩陣代表n天后細菌在培養皿上的分佈情況。

樣例輸入

2 1

樣例輸出

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 2 2 2 0 0 0
0 0 0 2 4 2 0 0 0
0 0 0 2 2 2 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

Accepted程式碼

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int[][] a=new int[11][11];
        int m=in.nextInt();
        int n=in.nextInt();
        a[5][5]=m;
        for(int i=1;i<=n;i++) {
            int
[][] b=new int[11][11]; for(int j=5-n;j<=5+n;j++) { for(int k=5-n;k<=5+n;k++) { for(int x=j-1;x<=j+1;x++) { for(int y=k-1;y<=k+1;y++) { b[x][y]+=a[j][k]; } }
} } for(int p=5-n;p<=5+n;p++) { for(int q=5-n;q<=5+n;q++) { a[p][q]+=b[p][q]; } } } for(int i=1;i<=9;i++) { for(int j=1;j<=9;j++) { System.out.print(a[i][j]+" "); } System.out.println(); } in.close(); } }