是要考虑所有可能出现的情况啊!
是你考别人呢还是你想从中学到点东西?我的目的是抛砖引玉,也希望楼主有所收获。毕竟此论坛不是ACM考场,OK?所以版主也经常提醒我等,不要直接给个尽善尽美的代码完事。
落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
上面的题目是一个奥塞试题, 我对这方面也感兴趣,和大家一起探讨以下是我的一点考虑,还请指教:
#include "stdio.h"
#define N 3
main()
{
int way1[N]={1,2,2,1}, way2[N]={2,-1,-1,2};
int m,n,i,j,k;
int chx[50]={1};
int chy[50]={1};
printf("please input tow mount:\n");
scanf("%d%d",&m,&n);
if(m<1||50<m||1>n||n<50)
printf("error\n");
else
printf("beain:\n");
for(N=3;N>=0;N--);
for(i=0,j=0;j<50&&j<50;j++,i++)
{
chx[i+1]=chx[i]+way1[0];
chy[j+1]=chy[j]+way2[0];
if(chx[i+1]>50||chx[i+1]<1||chy[j+1]>50||chy[j+1]<1)
continue;
chx[i+1]=chx[i-1]+way1[4-N];
chy[j+1]=chy[j-1]+way2[4-N];
if(chx[i+1]=m&&chy[j+1]=n)
break;
}
for(j=0,i=0;j<50&&n<50;j++,i++)
printf("(%d%d)",chx[i]chy[j]);
}
getch();
}
#include "stdio.h"
#define N 3
main()
{
int d[4][2]={{1,2},{2,-1},{2,-1},{1,2}};
int m,n,i,j,k;
int chx[50]={1};
int chy[50]={1};
printf("please input tow mount:\n");
scanf("%d%d",&m,&n);
if (m<1||50<m||1>n||n<50)
{
printf("error!input again:\n");
scanf("%d%d",&m,&n);
}
for(k=0;k<3;k++);
for(i=1,j=1;i<25&&j<25;j++,i++)
{
chx[i]=chx[i-1]+d[k][0];
chy[j]=chy[j-1]+d[k][1];
if(chx[i]>=m||chx[i]<=1||chy[j]>=n||chy[j]<=1)
chx[i]=chx[i-1]+d[k][0];
chy[j]=chy[j-1]+d[k][1];
if(chx[i]==m&&chy[j]==n)
break;
}
for(j=0,i=0;j<25&&n<25;j++,i++)
printf("(%d,%d)->",chx[i],chy[j]);
getch();
}运行对了但结果不对!!!!