VS2017C语言编程,写入位置时发生访问冲突
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
long long int mov(int);
//参数1:第j个位置
long long int count;
int coordinate1[13] = { 0 };
//横坐标
int coordinate2[13] = { 0 };
//纵坐标
int j = 0;
int m = 0;
int main(void)
{
count = 0;
//初始坐标为(0,0)
count = mov(j);
printf("%lld\n", count);
system("pause");
return 0;
}
long long int mov(int j)
{
if (j == 13)
return 1;
int new_pos1, new_pos2;
int i;
for (i = 1; i < 5; i++)
{
switch (i)
{
case 1:
{
//前进:横坐标不变,纵坐标加1
new_pos2 = coordinate2[j] + 1;
new_pos1 = coordinate1[j];
break;
}
case 2:
{
//后退:横坐标不变,纵坐标减1
new_pos2 = coordinate2[j] - 1;
new_pos1 = coordinate1[j];
break;
}
case 3:
{
//左移:横坐标加1,纵坐标不变
new_pos1 = coordinate1[j] + 1;
new_pos2 = coordinate2[j];
break;
}
case 4:
{
//右移:横坐标减1,纵坐标不变
new_pos1 = coordinate1[j] - 1;
new_pos2 = coordinate2[j];
break;
}
default:
break;
}
int k;
for (k = j; k >= 0; k--)
{
if (new_pos1 == coordinate1[k] && new_pos2 == coordinate2[k])
{
break;
}
else
{
coordinate1[j+1] = new_pos1;
coordinate2[j+1] = new_pos2;
}
}
if (k >= 0)
{
continue;
}
j++;
m = j;
count = count + mov(m);
}
return count;
}
想根据《程序员的算法趣题》中Q08优秀的扫地机器人的原ruby代码改写C语言程序,结果出现错误。
机器人从原点出发,上下左右移动,移动12次,经过的坐标点不重复,有多少种路径。
望各位能够解答小弟程序的问题。