2015-12-24 2 views
1

Voici mon code. Il passe le testcase donné dans l'énoncé du problème. Lien pour le problème: http://www.spoj.com/problems/ACPC10D/ tri [i] [j] stocke la valeur min à atteindre à l'index (i, j) à partir de tri [0] [1].spoj ACPC10D -Pourquoi je reçois la mauvaise réponse?

//trigraphs-dp 
#include<iostream> 
#include<limits.h> 
using namespace std; 
int tri[1000000][3]; 
int min(int a,int b) 
{ 
if(a<=b) 
return a; 

else 
return b; 
} 

int main() 
{ 
int n,t=1; 
while(cin>>n) 
{ 

    if(n==0) 
    break; 
    for(int i=0;i<n;i++) 
    for(int j=0;j<3;j++) 
    cin>>tri[i][j]; 

    tri[0][0]=INT_MAX; 

    tri[0][2]=tri[0][1]+tri[0][2]; 
    //cout<<tri[0][2]; 

    int a,b,c,d; 
    for(int i=1;i<n;i++) 
    for(int j=0;j<3;j++) 
    { 
     a=tri[i-1][j]; 
     b=(j==2)?INT_MAX:tri[i-1][j+1]; 
     c=(j==0)?INT_MAX:tri[i-1][j-1]; 
     d=(j==0)?INT_MAX:tri[i][j-1]; 

     tri[i][j]+=min(min(a,b),min(c,d)); 
    } 

    cout<<t<<". "<<tri[n-1][1]<<"\n"; 

    } 

return 0; 
} 
+0

Que diriez-vous de faire un test-sortie chaque fois que les valeurs sont mises à jour. Le problème est assez petit pour détecter dans quel pas quelque chose s'est mal passé en regardant tous les changements. – MrSmith42

+0

S'il vous plaît commenter votre code et avoir son format reflètent sa structure. – greybeard

Répondre

0

1- Vous avez oublié d'incrémenter t à la fin de la boucle

2- Définir tri comme à long type long à cause de débordement possible lorsque vous ajoutez des numéros.