永发信息网

编程题,大家看下。

答案:1  悬赏:80  手机版
解决时间 2021-05-11 18:54
  • 提问者网友:欲望失宠
  • 2021-05-11 16:06

从坐标(n,n)(n是正整数)(n由键盘输入)到坐标(0,0),其中的变化是每次加上-1的m次方倍(Xm,Ym),其中(Xm,Ym)只能取{(0,1),(0,2),(1,0),(1,1),(2,0)},其中每次坐标运算的结果必须在{(0,A),(A,A),(n,A)A的取值为0到n}。求所有可能的m值以及对应m值下的所有每步的(Xm,Ym)。

最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-05-11 16:28

#include<stdio.h>


main()


{


int i,j,k;


int A[13][2]={(4,4),(4,3),(4,2),(4,1),(4,0),(3,3),(2,2),(1,1),(0,4),(0,3),(0,2),(0,1),(0,0)};


int B[5][2]={(0,1),(0,2),(1,1),(1,0),(2,0)},D[1][2],E[1][2],F[1][2];


for (i=1;i<100;i++)


{


D[0][0]=A[0][0];


D[0][1]=A[0][1];


for(j=0;j<5;j++)


{


E[0][0]=B[j][0];


E[0][1]=B[j][1];


F[1][2]=func(i,D[1][2],E[1][2]);


for(k=0;k<13;k++)


{


if(A[k][0]==F[0][0]&&A[k][1]==F[0][1])


break;


}


if(k==13)


continue;





























break;


}


if(j==5)


i=100;


if(F[0][0]==A[13][0]&&F[0][1]==A[13][1])


break;


else


A[0][0]=F[0][0];


A[0][1]=F[0][1];


}


if(i!=100)


printf("%d\n",i);


else


printf("No way.\n");


}


func(int k,int D[1][2],int E[1][2])


{


int c1,c2,i,C[1][2];


if(k%2==1)


i=-1;


else


i=1;


c1=D[0][0]+i*E[0][0];


c2=D[0][1]+i*E[0][1];


C[1][2]={(c1,c2)};


return(C[1][2]);


}






我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯