Swapping digits

mi serve qualcuno per capire se mi sono dimenticato qualche caso importante da considerare o è il mio codice a sbagliare:

  #include <iostream>
  #include <vector>
  #include <cmath>
  #include <string>
  #include <algorithm>
  #include <fstream>
  using namespace std;
  
  
  int digit[10];
  
  
  void risolvi(int arr[ ]){
      int min_moves = 20;
      int moves=0;
      
      if(digit[0]>=2){
          if(arr[0]!=0){
              moves++;
          }
          if(arr[1]!=0){
              moves++;
          }
          min_moves = min(moves, min_moves);
          moves=0;
      }
      
      if(digit[2]>=1 && digit[5]>=1){
          if(arr[1]!=5){
              moves++;
          }
          if(arr[0]!=2){
              moves++;
          }
  
          if(arr[1]==2 && arr[0]==5){
              moves=1;
          }
  
          min_moves = min(moves, min_moves);
          moves=0;
      }
      
      if(digit[0]>=1 && digit[5]>=1){
          if(arr[1]!=0){
              moves++;
          }
          if(arr[0]!=5){
              moves++;
          }
  
          if(arr[1]==5 && arr[0]==0){
              moves=1;
          }
          min_moves = min(moves, min_moves);
          moves=0;
      }
      
      if(digit[5]>=1 && digit[7]>=1){
          if(arr[1]!=5){
              moves++;
          }
          if(arr[0]!=7){
              moves++;
          }
          if(arr[1]==7 && arr[0]==5){
              moves=1;
          }
          min_moves = min(moves, min_moves);
          
      }
      
      if(min_moves!=20){
          cout<<min_moves<<endl;
      }else{
          cout<<-1<<endl;
      }
  }
  
  int main(){
      int T=0;
      string num;
  
      
      for(int i=0; i<10; ++i){
          digit[i]=0;
      }
      
      cin>>T;
      
      for(int z=0; z<T; ++z){
          
          int last_two[2];
          cin>>num;
          
          if(num.size()>1){
              last_two[0] = num[num.size()-2]-'0';
              last_two[1] = num[num.size()-1]-'0';
              
              for(int i=0; i<num.size(); ++i){
                  ++digit[num[i]-'0'];
              }
              risolvi(last_two);
          }else{
              cout<<-1<<endl;
          }
          
      }
  
  }

digit è una variabile globale, che non stai resettando tra un caso e l’altro.

2 Mi Piace

grazie