#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]);} //printf("\n"); pascaldr(actzeile+1,!arr); } int main(void) { input = fopen("grid.in","r"); fscanf(input,"%d %d\n", &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; pascaldr(2,1); printf("%i\n", pasc[platz][act]); fscanf(input,"%d %d\n", &n, &m); } fclose(input); return 0; }