将顺序数字向右旋转

时间:2016-05-05 00:43:00

标签: java rotation

很容易将数字向左旋转。我会做以下事情:

int numberCount = 4;
int rotationCount = 2 * numberCount;
for(int i = 0; i < rotationCount; i++)
{
  for(int j = 0; j < numberCount; j++)
  {
    System.out.print((i+j) % numberCount + " ");
  }

  System.out.println();
}

在此示例中,将打印以下内容:

  

0 1 2 3

     

1 2 3 0

     

2 3 0 1

     

3 0 1 2

     

0 1 2 3

     

1 2 3 0

     

2 3 0 1

     

3 0 1 2

你会如何做同样的事情,但将数字向右旋转?

1 个答案:

答案 0 :(得分:0)

一旦我想到它,答案就很明显了 - 向左移动一个数字,你加上它,所以向右移动,你从中减去它。我认为这个公式会发生很大的变化,所以我想到的公式比解决方案要复杂得多。

// ensures mod is positive
int mod(int a, int b)
{ return (a%b+b)%b; }

int numberCount = 4;
int rotationCount = 2 * numberCount;

for(int i = 0; i < rotationCount; i++)
{
    for(int j = 0; j < numberCount; j++)
    {
        System.out.print(mod((j-i), numberCount) + " ");
    }

    System.out.println();
}