madalinaradu

IA MinMax

May 29th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<iomanip>
  4. #include<time.h>
  5. #include<stdlib.h>
  6. #define NrMutari 3
  7. #define ValMax 10
  8. using namespace std;
  9.  
  10. int max(int a, int b) {
  11.     if(a<b)
  12.         return b;
  13.     else
  14.         return a;
  15. }
  16. int min(int a, int b) {
  17.     if(a>b)
  18.         return b;
  19.     else
  20.         return a;
  21. }
  22. int eval(bool mutaMax, int scorCurent) {
  23.     if( scorCurent+NrMutari>=ValMax) {
  24.         if(mutaMax)
  25.             return 10;
  26.         else
  27.             return -10;
  28.     }
  29.     return 0;
  30. }
  31.  
  32. int MinMax(bool mutaMax, int scorCurent) {
  33.     int scor=eval(mutaMax,scorCurent );
  34.     if(scor!=0)
  35.         return scor;
  36.     if(mutaMax) {
  37.         int best=-20;
  38.         for(int i=1; i<NrMutari; i++)
  39.             if(scorCurent+i<=ValMax) {
  40.                 scorCurent+=i;
  41.                 best=max(best,MinMax(!mutaMax, scorCurent));
  42.                 scorCurent-=i;
  43.             }
  44.         return best;
  45.     } else {
  46.         int best=20;
  47.         for(int i=1; i<NrMutari; i++)
  48.             if(scorCurent+i<=ValMax) {
  49.                 scorCurent+=i;
  50.                 best=min(best,MinMax(!mutaMax, scorCurent));
  51.                 scorCurent-=i;
  52.             }
  53.         return best;
  54.     }
  55.  
  56. }
  57.  
  58. int mutarePerfecta(int mutaMax, int scorCurent) {
  59.     int mutare=-1;
  60.     int evalMaxMutare=-20;
  61.     int evalMinMutare=20;
  62.     if(mutaMax) {
  63.         for(int i=1; i<NrMutari; i++) {
  64.             if(scorCurent+i<=ValMax) {
  65.                 scorCurent+=i;
  66.                 int evalMutare=MinMax(!mutaMax, scorCurent);
  67.                 scorCurent-=i;
  68.                 if(evalMaxMutare < evalMutare) {
  69.                     evalMaxMutare = evalMutare;
  70.                     mutare=i;
  71.                 }
  72.             }
  73.         }
  74.     } else {
  75.         for(int i=1; i<NrMutari; i++) {
  76.             if(scorCurent+i<=ValMax) {
  77.                 scorCurent+=i;
  78.                 int evalMutare=MinMax(!mutaMax, scorCurent);
  79.                 scorCurent-=i;
  80.                 if(evalMinMutare > evalMutare) {
  81.                     evalMinMutare = evalMutare;
  82.                     mutare=i;
  83.                 }
  84.             }
  85.         }
  86.     }
  87.     return mutare;
  88. }
  89.  
  90. int main() {
  91.     cout<<MinMax(1,7);
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment