主要移动方法:
public static int[] getNum(int[] b, int m)
{
int[] a = new int[m];
int k = m - 1;
for (int i = b.Length - 1; i >= b.Length - m; i--)
{
a[k] = b[i];
k--;
}
for (int i = b.Length - m - 1; i >= 0; i--)
b[i + m] = b[i];
for (int j = 0; j < m; j++)
b[j] = a[j];
return b;
}
主函数做判断,减少循环次数,降低复杂度:
if (m>0&&m<=n)
{
b = getNum(b, m);
}
else if (m>n)
{
while (m>n)
m = m - n;
b = getNum(b, m);
}
整个代码:
public class Number{
public static int[] getNum(int[] b, int m)
{
int[] a = new int[m];
int k = m-1;
for (int i = b.Length-1; i >= b.Length - m; i--)
{
a[k] = b[i];
k--;
}
for (int i = b.Length-m-1; i >=0; i--)
b[i + m] = b[i];
for (int j = 0; j < m; j++)
b[j] = a[j];
return b;
}
static void Main(string[] args)
{
string s = Console.ReadLine();
string[] ss = s.Split(' ');
int n = Convert.ToInt32(ss[0]), m = Convert.ToInt32(ss[1]);
string str = Console.ReadLine();
string[] strr = str.Split(' ');
int[] b = new int[strr.Length];
for (int i = 0; i < strr.Length; i++)
b[i] = Convert.ToInt32(strr[i]);
if (m>0&&m<=n)
b = getNum(b, m);
else if (m>n)
{
while (m>n)
m = m - n;
b = getNum(b, m);
}
for (int k = 0; k < b.Length; k++)
{
if (k != b.Length - 1)
Console.Write(b[k] + " ");
else
Console.Write(b[k]);
}
Console.ReadKey();
}
}