begin process at 2012 05 28 09:37:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Augmenter la rapidité de calcul d'un programme.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Augmenter la rapidité de calcul d'un programme.

mercredi 14 décembre 2005 à 00:01:10 | Augmenter la rapidité de calcul d'un programme.

JanCam

Bonjour,
En essayant de dévelloper un exercice du concours prologin, je me suis heurté à un problème que je n'arrive pas à résoudre.
L'exercice est le suivant : [ Lien ]

Mon problème vient du fait que lorsque j'augmente le chiffre n, le temps de calcul augmente aussi jusqu'à atteindre la limite autorisée (0,125secondes). Je vois pas d'autres solutions que de changer l'algorithme mais j'en vois pas trop d'autres :| ... si quelqu'un peut m'éclairer, Merci.

Voilà mon code :

#include <iostream>

using namespace std;

int main(int argcs, char* szarg)
     {
                       
              int nLong;
              cin  >> nLong;
                   
                      if (nLong > 100000 || nLong < 2)
                          return 0;
                                                       
               int* nElem = new int[nLong];
               int max = 0, snd;
                            
                      for (int i = 0; i < nLong; i++)
                           {
                                                                               
                                cin >> nElem[i];
                                                                                
                                      if (nElem[i] >= max)
                                         {
                                            snd = max;
                                            max = nElem[i];
                                          }//if
                                                                                                   
                                        else if (nElem[i] > snd)           
                                                   snd = nElem[i];

                              }//for

               delete[] nElem;
               cout << snd << endl;
                                                       
        return snd;
     }//main

mercredi 14 décembre 2005 à 09:46:42 | Re : Augmenter la rapidité de calcul d'un programme.

MoDDiB

Réponse acceptée !
Ton algo est largement assez rapide pour passer le test ( ou plutot le teste est assez large pour que ton algo passe )
Ton erreur vient du fait que tu traites le probleme pendant que tu recuperes les entrées et ca peut donc poser des problemes .
J'ai corrigé ton algo et il passe sans probleme :

#include <stdio.h>
int nb;
int tab[100000];



int second()
{
  int first =0;
  int snd = 0 , max = 0;

  int i;
  for(i = 0;i<nb;i++)
  {

       if (tab[i] >= max)
       {
            snd = max;
            max = tab[i];
       }//if 
        else if ( tab[i] > snd)          
           snd = tab[i];

   }



  return snd;


}

int main()
{
  int i;
  scanf("%d",&nb);

  for(i = 0;i < nb ; i++)
    scanf("%d",&tab[i]);


  printf("%d\n",second());


  return 0;
}




mercredi 14 décembre 2005 à 11:29:25 | Re : Augmenter la rapidité de calcul d'un programme.

JanCam

Salut, merci de ta réponse. En effet ton code fonctionne et passe le test sans problèmes. Par contre j'en ai refais un avec les fonctions C++ à l'image du tien et il ne fonctionne pas, du moins il n'est pas assez rapide. Dois-je en conclure que le CPP est potentiellement plus lent que le C ?

Voilà mon code :

#include <iostream>

using namespace std;

int nElem[100000];
int nLong;

int second()
    {
      int snd = 0, max = 0;
     
          for (int i = 0; i < nLong; i++)
              {
                   if (nElem[i] >= max)
                      {
                         snd = max;
                         max = nElem[i];
                      }
                   else if (nElem[i] > snd)
                            snd = nElem[i];
              }
     
      return snd;
     
    }

int main(void)
    {
     
              cin >> nLong;
              
              for (int i = 0; i < nLong; i++)
                  cin >> nElem[i];
              
              cout << second();
              
              return 0;    
     
    }



Cette discussion est classée dans : int, max, snd, nelem, nlong


Répondre à ce message

Sujets en rapport avec ce message

jai un probleme avec ma source!!!!! jai vérifeir et je ne trouve rien...pouvez vous m'aider.... [ par retaks666 ] alors jai veut faire un programme ki génére une suite de caractere d'un nombre donné...et sa marche po... je vous done ma source si vous pouvez m'aide c++ creation d'un fichier texte a nom variable [ par sloaneaaaa ] ben voila je voudrai creer un fichier texte auquel je puisse donner n'importe quel nom ms g des erreurs que je comprend pasle nom de fichier est ds un Passage par adresse d'un tableau de structures. [ par alekine ] Bonjour, j'ai un problème pour passer par adresse un tableau de structures. Voilà mon code:#include #define L_MAX 2struct point //la structure d'un p Fonction qui retourne un tableau [ par Kurul1 ] Bonjour à tous   J'ai une classe contenant un tableau a deux dimensions comme variable private  Ce que je voudrais c'est une fonction ayant pour param compilation c++ [ par cricri nature ] J'ai de gros soucis avec ma compilation et je ne sais pas quoi faire? Pouvez-vous m'aider?Il compile seulement il m'indique :-------------------Config tri tableau en ligne [ par TWITTI ] bonjour , je suis etudiant en mécanique et la programmtion c est embetant pour moi.J ai un probleme sur mon programme main().Je n arrive pas a faire Probleme avec une source [ par n3m3s1s ] Erreur de code , je copi bien ce que me dit le livre pourtant #include #define MAXLIGNE 1000 int lireligne(char ligne[], char de[]); void copier(ch Problème avec les classes. [ par xelados ] J'ai commencer les classes et j'avoue que je les comprend plus ou moin je ne sais pas exactement c quoi mes erreurs .. mais j'en nais 16 ... Ce que j' problème de cout [ par akwell1 ] bonjour,je voudrais savoir comment ce que je dois mettre dans le cout en bas pour que la valeur retour de la fonction s'affiche a l'ecran merci [code] Help! Pb de spécif en C [ par tomalille ] Bonjour, je suis en train d'écrire un programme et je voudrai faire une fonction qui renvoit un tableau d'entier.Je n'arrive pas à faire la spécif.Vou


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales