Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Informatica / Liste liniare dublu inlantuite : Martie 24, 2014, 17:24:17
Cum adaug un nod in interiorul unei liste liniare dublu inlantuite?
2  infoarena - concursuri, probleme, evaluator, articole / Informatica / Problema la informatica : Martie 08, 2014, 10:48:55
Ma puteti ajuta sa rezolv urmatoarea problema:
Fişierul text NR.TXT conţine pe o singură linie, separate prin câte un spaţiu, cel mult 100 de
numere întregi, fiecare număr având cel mult 4 cifre. Scrieţi un program C/C++ care citeşte
numerele din fişierul NR.TXT şi afişează pe ecran, separate prin câte un spaţiu, în ordine
crescătoare, toate numerele naturale nenule din fişier. Dacă nu există astfel de numere se
va afiÅŸa pe ecran mesajul NU EXISTA.
Exemplu: dacă fişierul NR.TXT conţine numerele: -3 -10 0 7 -5 7 51 -800 6 3798,
atunci pe ecran se va afiÅŸa: 6 7 7 51 3798
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Metoda backtracking : Februarie 25, 2014, 22:20:58
De fapt am scris programul ,dar nu afiseaza nici o solutie.

#include <iostream>

using namespace std;
int st[100],i,n,k,numara=0,c1,c2,c3;
void init()
     {
      if(k==1)
         st[k]=0;
      else
          st[k]=1;
      }
int succesor()
   {
    if(st[k]<n)
    {
       st[k]=st[k]+1;
       return 1;
    }
    else
         return 0;
   }
int valid()
    {
     if(((st[k]==c1)||(st[k]==c2)||(st[k]==c3)))
            return 0;
     return 1;
    }
int solutie()
    {
     long x=0,p=1,ok=0;
     for(i=1;i<=k;i++)
        {
         x=x*p+st;
         p*=10;
        }
     for(i=2;i<=x/2 && ok;i++)
          if(x%i==0)
             ok=0;
     return(k==n && ok);
    }
void tipar()
     {
      numara++;
      for(i=1;i<=k;i++)
           cout<<st<<' ';
      cout<<endl;
     }
void back()
     {
      int as,ev;
      k=1;
      init();
      while(k>0)
           {
             do
             {
                as=succesor();
                if(as)
                    ev=valid();
             }
             while(as && (!as || !ev));
             if(as)
                if(solutie())
                   tipar();
                else
                {
                    k++;
                    init();
                }
             else
                  k--;
            }
     }
int main()
{
    cout<<"dati n:";
    cin>>n;
    cout<<"dati numerele:";
    cin>>c1>>c2>>c3;
    back();
    cout<<"nr solutii:"<<numara<<endl;
    return 0;

}
4  infoarena - concursuri, probleme, evaluator, articole / Informatica / Metoda backtracking : Februarie 25, 2014, 15:36:41
Sa se genereze toate numerele prime de n cifre(n<10),formate cu cifrele c1,c2,c3 citite de la tastatura.
Ex: n=4; c1=1; c2=5; c3=3; Solutii: 1151,1153,1511,1553,...
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines