读书人

数字正方形,该如何解决

发布时间: 2012-04-16 16:20:04 作者: rapoo

数字正方形
做一个数字的正方形

比如


1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16


目的让他顺时针旋转 且 中间的四个数字6,7,10,11不变,每次转动一个位置 如何实现?


[解决办法]

C# code
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条边.

读书人网 >C#

热点推荐