# Swapping digits

**URL:** <https://forum.olinfo.it/t/swapping-digits/8690>\
**Category:** Aiuto\
**Created:** [2 Gennaio 2024, 11:35pm UTC](https://forum.olinfo.it/t/swapping-digits/8690 "2024-01-02T23:35:45Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Adaminator1111](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@Adaminator1111](https://forum.olinfo.it/u/Adaminator1111)\
**Post date:** [2 Gennaio 2024, 11:35pm UTC](https://forum.olinfo.it/t/swapping-digits/8690/1 "2024-01-02T23:35:46Z")

</div>

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

```auto
  #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;
          }
          
      }
  
  }

```

---

<div class="post-metadata">

**Author:** ![fve5](https://forum.olinfo.it/user_avatar/forum.olinfo.it/fve5/32/3229_2.png) [@fve5](https://forum.olinfo.it/u/fve5)\
**Post date:** [3 Gennaio 2024, 11:28am UTC](https://forum.olinfo.it/t/swapping-digits/8690/2 "2024-01-03T11:28:25Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Adaminator1111](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/a/e99b99/32.png) [@Adaminator1111](https://forum.olinfo.it/u/Adaminator1111)\
**Post date:** [4 Gennaio 2024, 2:07pm UTC](https://forum.olinfo.it/t/swapping-digits/8690/3 "2024-01-04T14:07:38Z")

</div>

grazie
