33,008
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int d[10]={1,1,1,1,1,1,1,1,1,1};
int calneibor(int i,int loop)
{
if(loop == 1)
switch (i)
{
case 0:return 1;
case 1:return 2;
case 2:return 3;
case 3:return 2;
case 4:return 3;
case 5:return 4;
case 6:return 3;
case 7:return 2;
case 8:return 4;
case 9:return 2;
}
else {
int next = loop-1;
switch (i)
{
case 0:
return calneibor(8,next);
case 1:
return calneibor(2,next)+calneibor(4,next);
case 2:
return calneibor(1,next)+calneibor(3,next)+calneibor(5,next);
case 3:
return calneibor(2,next)+calneibor(6,next);
case 4:
return calneibor(1,next)+calneibor(5,next)+calneibor(7,next);
case 5:
return calneibor(2,next)+calneibor(4,next)+calneibor(6,next)+calneibor(8,next);
case 6:
return calneibor(3,next)+calneibor(5,next)+calneibor(9,next);
case 7:
return calneibor(4,next)+calneibor(8,next);
case 8:
return calneibor(0,next)+calneibor(5,next)+calneibor(7,next)+calneibor(9,next);
case 9:
return calneibor(6,next)+calneibor(8,next);
}
}
}
int main()
{
int sum = 0;
int i;
for(i = 0;i<10;i++)
{
sum +=calneibor(i,7);
}
printf("total :%d",sum);
return 0;
}
final int[][] map = {
{ 8 }, { 2, 4 }, { 1, 3, 5 }, { 2, 6 }, { 1, 5, 7 },
{ 2, 4, 6, 8 }, { 3, 5, 9 }, { 4, 8 },
{ 0, 5, 7, 9 }, { 6, 8 } };
final int[][] res = new int[10][7];
int sum = 0;
for (int i = 0; i < 7; i++)
for (int j = 0; j < 10; j++)
if (i == 0)
sum += res[j][i] = map[j].length;
else {
for (int n : map[j])
res[j][i] += res[n][i - 1];
sum += res[j][i];
}
System.out.println(sum);