/* B E S C H R E I B U N G

Wer gewinnt das NimmSpiel?


I) Regeln

------ 
(0,-1)

------ 
(1,1)

------
(2,1)

{(a-1,w1), (a-2,w2), (a-3,w3)}
-------------------------------------- 
       (a, -min(w1,w2,w3))
 

Man kann dies durch Iteration oder Rekursion lösen.
Hier wird die iterative Lösung vorgestellt.
*/

#include "stdafx.h"

int ermittleMaximalerGewinn(int zahl);

int main(){
	int erg;
	int i;

	for(i=0;i<200; i++){
		erg = ermittleMaximalerGewinn(i);
		printf("i= %d  erg =%d \n", i, erg);

	}

	return 0;
}



/****************************************************************************/
/**																	       **/
/**  int negMin(int z1, int z2, int z3)                                    **/
/**																	       **/
/****************************************************************************/
/*
  Parameter:
    (i) int z1: 1. Zahl
    (i) int z2: 2. Zahl
    (i) int z3: 3. Zahl
	
  return:
    berechnet das Minimum der 3 Zahlen z1.z2.z3 
    und gibt davon den negativen Wert zurück.

  
  Beschreibung:
    Berechnet: - Minimum(z1,z2,z3)
*/

int negMin(int z1, int z2, int z3){
	int min;
	if(z1<z2)
		min=z1;
	else
		min=z2;
	if(z3<min)
		min=z3;
	return -min;
}




int ermittleMaximalerGewinn(int zahl){
	int anzahl;
	int gewinn1, gewinn2, gewinn3, gewinn;
	int i;


	gewinn1=-1;
	gewinn2=1;
	gewinn3=1;

	if(zahl==0)
		gewinn=-1;
	else if(zahl==1)
		gewinn=1;
	else if(zahl==2)
		gewinn=1;
	else{
		for(i=2; i<zahl; i++){
			gewinn= negMin(gewinn1, gewinn2, gewinn3);
			gewinn1=gewinn2;
			gewinn2=gewinn3;
			gewinn3=gewinn;
		}
	}

	return gewinn;
}

