数字正方形
做一个数字的正方形
比如
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
目的让他顺时针旋转 且 中间的四个数字6,7,10,11不变,每次转动一个位置 如何实现?
[解决办法]
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { int[,] data = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } }; Console.WriteLine("----------------------------"); for (int k = 0; k < 12; k++) { int temp = data[0, 3]; for (int i = 3; i > 0; i--) { data[0, i] = data[0, i - 1]; } for (int i = 0; i < 3; i++) { data[i, 0] = data[i + 1, 0]; } for (int i = 0; i < 3; i++) { data[3, i] = data[3, i + 1]; } for (int i = 3; i > 0; i--) { data[i, 3] = data[i - 1, 3]; } data[1, 3] = temp; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) Console.Write(data[i, j] + "\t"); Console.WriteLine(); } Console.WriteLine("----------------------------"); } } }}/*----------------------------5 1 2 39 6 7 413 10 11 814 15 16 12----------------------------9 5 1 213 6 7 314 10 11 415 16 12 8----------------------------13 9 5 114 6 7 215 10 11 316 12 8 4----------------------------14 13 9 515 6 7 116 10 11 212 8 4 3----------------------------15 14 13 916 6 7 512 10 11 18 4 3 2----------------------------16 15 14 1312 6 7 98 10 11 54 3 2 1----------------------------12 16 15 148 6 7 134 10 11 93 2 1 5----------------------------8 12 16 154 6 7 143 10 11 132 1 5 9----------------------------4 8 12 163 6 7 152 10 11 141 5 9 13----------------------------3 4 8 122 6 7 161 10 11 155 9 13 14----------------------------2 3 4 81 6 7 125 10 11 169 13 14 15----------------------------1 2 3 45 6 7 89 10 11 1213 14 15 16----------------------------Press any key to continue . . .*/
[解决办法]
把除中间数字外的数据 按 顺时针 放进1个队列, 队列右移1位后,再把队列放回对应的位置.
关键是取出4条边的数据 按 顺时针 放进1个队列,简单的可以用4个循环取出4条边.