#define MAX 32535u #include unsigned int m, n, zeile, platz, act; unsigned int pasc[MAX][2]; FILE *input; void pascaldr(unsigned int actzeile, bool arr) { if (actzeile > zeile) return; int act = (arr)?1:0; int prev = (!arr)?1:0; pasc[0][act]=1;//printf("1 "); for (unsigned int i = 1; i < actzeile; i++) {pasc[i][act] = pasc[i-1][prev] + pasc[i][prev];}// printf("%i ",pasc[i][act]);} pasc[actzeile][act] = 1; // printf("%i \n",pasc[actzeile][act]); pascaldr(actzeile+1,!arr); } int main(void) { input = fopen("grid.in","r"); fscanf(input,"%d %d", &n, &m); while(n!=0 && m!=0) { if(n==0 || m==0) { printf("0\n"); continue; } zeile = n+m; platz = (n < m) ? n : m; //Min act = (zeile+1)%2; pasc[0][0] = 1;pasc[1][0]=1;pasc[2][0] = 0; pascaldr(2,1); printf("%u\n", pasc[platz][act]); fscanf(input,"%d %d\n", &n, &m); } fclose(input); return 0; }