起始位置是1 2 N 执行LMLMLMLMM应该是 1 3 N吧 1 2 N -- LM--0 2 W--LM--0 1 S--LM--1 1 E--LM--1 2 N--M-1 3 N 算法是这样的吧 上北下南左西右东
Console.WriteLine("请输入右上角坐标"); //输入5 5 string [] aa = Console.ReadLine().Split(' '); int i = Convert.ToInt32(aa[0]); int j = Convert.ToInt32(aa[1]); Console.WriteLine("请输入当前坐标和位置"); //输入1 2 N string[] SSS = Console.ReadLine().Split(' '); int X = Convert.ToInt32(SSS[0]); int Y = Convert.ToInt32(SSS[1]); string direction = SSS[2]; Console.WriteLine("请输入操作"); //LMLMLMLMM char [] step = Console.ReadLine().ToCharArray(); foreach (char ss in step) { if(ss=='L') { switch (direction) { case "N": direction = "W"; break; case "W": direction = "S"; break; case "S": direction = "E"; break; case "E": direction = "N"; break; default: break; } } if (ss == 'R') { switch (direction) { case "N": direction = "E"; break; case "W": direction = "N"; break; case "S": direction = "W"; break; case "E": direction = "S"; break; default: break; } } if (ss == 'M') { switch (direction) { case "N": Y += 1; break; case "S": Y -= 1; break; case "E": X += 1; break; case "W": X -= 1; break; } } } Console.WriteLine(X.ToString()+' '+Y.ToString()+' '+direction); //结果1 3 N Console.ReadLine(); 写了个控制台程序 输入的时候字符中间用空格,右上角坐标那个没有加验证也就是X和Y不能大于5,你自己看着加吧
比如输入5 5 1 2 N LMLMLMLMM 3 3 E MMRMMRMRRM 输出1 3N 5 1E
1 2 N是现在的位置
5 5也就是最大的位置
3 3E就是执行LMLMLMLMM后的位置
1 2 N是现在的位置
5 5也就是最大的位置
3 3E就是执行LMLMLMLMM后的位置
1 2 N -- LM--0 2 W--LM--0 1 S--LM--1 1 E--LM--1 2 N--M-1 3 N
算法是这样的吧
上北下南左西右东
Console.WriteLine("请输入右上角坐标"); //输入5 5
string [] aa = Console.ReadLine().Split(' ');
int i = Convert.ToInt32(aa[0]);
int j = Convert.ToInt32(aa[1]); Console.WriteLine("请输入当前坐标和位置"); //输入1 2 N
string[] SSS = Console.ReadLine().Split(' ');
int X = Convert.ToInt32(SSS[0]);
int Y = Convert.ToInt32(SSS[1]);
string direction = SSS[2]; Console.WriteLine("请输入操作"); //LMLMLMLMM
char [] step = Console.ReadLine().ToCharArray(); foreach (char ss in step)
{
if(ss=='L')
{
switch (direction)
{
case "N":
direction = "W";
break;
case "W":
direction = "S";
break;
case "S":
direction = "E";
break;
case "E":
direction = "N";
break;
default:
break;
}
} if (ss == 'R')
{
switch (direction)
{
case "N":
direction = "E";
break;
case "W":
direction = "N";
break;
case "S":
direction = "W";
break;
case "E":
direction = "S";
break;
default:
break;
}
} if (ss == 'M')
{
switch (direction)
{
case "N":
Y += 1;
break;
case "S":
Y -= 1;
break;
case "E":
X += 1;
break;
case "W":
X -= 1;
break;
}
}
} Console.WriteLine(X.ToString()+' '+Y.ToString()+' '+direction); //结果1 3 N
Console.ReadLine();
写了个控制台程序 输入的时候字符中间用空格,右上角坐标那个没有加验证也就是X和Y不能大于5,你自己看着加吧
1 2 N
LMLMLMLMM
3 3 E
MMRMMRMRRM
输出1 3N
5 1E