func roundRobinSchedule(n int) { if n < 2 { fmt.Println("error") return } k:=int(math.Pow(2.0,float64(n))) dp:=make([][]int,k) for i := range dp { dp[i]=make([]int,k) } dp[0][0],dp[0][1],dp[1][0],dp[1][1]=1,2,2,1 var gen func(x,y,d int) var cpy func(x,y,d,x2,y2 int) var prt func(x,y,d int) gen=func(x,y,d int){ for i := 0; i < d; i++ { for j := 0; j < d; j++ { dp[x+i][y+j+d]=dp[x+i][y+j]+d } } } cpy=func(x,y,d ,x2,y2 int){ for i := 0; i < d; i++ { for j := 0; j < d; j++ { dp[x2+i][y2+j]=dp[x+i][y+j] } } } prt=func(x,y,d int){ for i := 0; i < d; i++ { for j := 0; j < d; j++ { fmt.Print(dp[x+i][y+j]) fmt.Print(" ") } fmt.Println() } } d:=2 for i := 1; i < n; i++ { gen(0,0,d) cpy(0,0+d,d,0+d,0) cpy(0,0,d,0+d,0+d) d=d*2 } prt(0,0,d) }