蓝桥杯程序设计大赛真题及解析 » 振兴中华
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
int s=0;
void walk(int x,int y)
{
if(x>3 || y>4)
return;
if(x==3 && y==4)
{
s++;
return;
}
walk(x+1,y);
walk(x,y+1);
}
int main()
{
walk(0,0);
printf("%d",s);
return 0;
}
http://www.zhuangjingyang.com/%E6%8C%AF%E5%85%B4%E4%B8%AD%E5%8D%8E.html
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
地上画着一些格子,每个格子里写一个字,如下所示:
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。
要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
int main( ) { char c_i = 0; char c_j = 0; char c_arr[4][5] = {0}; clock_t start, finish; start = clock(); for(c_i=0; c_i<4; c_i++) c_arr[c_i][0] = 1; for(c_j=0; c_j<5; c_j++) c_arr[0][c_j] = 1; for(c_i=1; c_i<4; c_i++) for(c_j=1; c_j<5; c_j++) c_arr[c_i][c_j] = c_arr[c_i-1][c_j] + c_arr[c_i][c_j-1] ; printf("总共有%d种路线\n", c_arr[3][4]); finish = clock(); printf( "\n\n\n程序运行时间:%.3f ms\n", (double)(finish - start)); return 0; }http://www.mofriend.net/node/449
int s=0;
void walk(int x,int y)
{
if(x>3 || y>4)
return;
if(x==3 && y==4)
{
s++;
return;
}
walk(x+1,y);
walk(x,y+1);
}
int main()
{
walk(0,0);
printf("%d",s);
return 0;
}
http://www.zhuangjingyang.com/%E6%8C%AF%E5%85%B4%E4%B8%AD%E5%8D%8E.html
void find(int i,int j,int cur) { if(t[i][j]==8){ count++; return; } if(i>0&&t[i-1][j] == cur+1) find(i-1, j,cur+1); if(i<3&&t[i+1][j] == cur+1) find(i+1, j, cur+1); if(j>0&&t[i][j-1] == cur+1) find(i, j-1, cur+1); if(j<4&&t[i][j+1] == cur+1) find(i, j+1, cur+1); return; } int main() { find(0, 0, 1); printf("%d\n",count); return 0; }Read full article from 蓝桥杯程序设计大赛真题及解析 » 振兴中华