在坐标系中,从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)(0,0) ->(2,2)
0.0- >1.0 ->2.0 ->2,1 ->2,2 1
0,0->1.0->1,1 ->2.1->2.2 2
0.0 -> 1.0 ->.1,1->1,2->2,2 3
0.0 -> 0.1- >0.2- >1.2 ->2.2 4
0.0 ->0.1 ->1.1->1.2->2.2 5
f(m,n)
#include<stdio.h>#include<stdlib.h>//在坐标系内只能向上或者向右typedef struct node{ int x, y;}node;int cnt;node nd[100];int ff(int a, int b, int x, int y, int step){ int i; if (a == x && b == y) { cnt++; for (i = 0; i <= step; i++) { PRintf("(%d,%d) ", nd[i].x, nd[i].y); } printf("/n"); return ; } else { if (x < a && y <= b) { nd[step + 1].x = x + 1; nd[step + 1].y = y; ff(a, b, x + 1, y, step + 1); } if (y < b && x <= a) { nd[step + 1].x = x; nd[step + 1].y = y + 1; ff(a, b, x, y + 1, step + 1); } }}int main(){ int a, b ; while (scanf("%d%d", &a, &b) != EOF) { cnt = 0; nd[0].x = nd[0].y = 0; ff(a, b, 0, 0, 0); printf("路径总数为:%d/n", cnt); } system("pause");}
新闻热点
疑难解答