Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Informatica / Secventa maximala - solutie patratica : Iunie 12, 2014, 18:15:22
am nevoie de un algoritm pt  Aflarea secventei maximale de elemente dintr-un vector care indeplinesc o proprietate  cand prop se testeaza in ansamblul unei secvente de valori – solutie partatica
2  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Sudoku : Mai 13, 2014, 13:28:19
Pai intocmai ca nu-l ia pe primul , daca in acel spatiu se potrivesc mai multe numere ramane gol pana la urmatoarea parcurgere...in fine am mai facut niste modificari ...
Cod:
 while(ok==1)
   {for(i=1;i<=9;i++)
       for(j=1;j<=9;j++)
           if(a[i][j]==0)
              {s=0;
               for(o=1;o<=9;o++)
                  {aj=a[i][j]; d2=0; d=0; r=0; r2=0;
                  a[i][j]=o;
                  if(i>=1&&i<=3)
                    {if(j>=1&&j<=3)
                        {for(k2=1;k2<=3;k2++)
                             for(k3=1;k3<=3;k3++)
                                 if(a[i][j]==a[k2][k3])
                                    d2++;
                         if(d2>=2)
                            r++; d2=0;}
                     if(j>=4&&j<=6)
                        {for(k2=1;k2<=3;k2++)
                             for(k3=4;k3<=6;k3++)
                                 if(a[i][j]==a[k2][k3])
                                    d2++;
                         if(d2>=2)
                            r++; d2=0;}
                    if(j>=7&&j<=9)
                       {for(k2=1;k2<=3;k2++)
                            for(k3=7;k3<=9;k3++)
                                if(a[i][j]==a[k2][k3])
                                   d2++;
                        if(d2>=2)
                          r++; d2=0;}}
                   if(i>=4&&i<=6)
                      {if(j>=1&&j<=3)
                          {for(k2=4;k2<=6;k2++)
                               for(k3=1;k3<=3;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=4&&j<=6)
                          {for(k2=4;k2<=6;k2++)
                               for(k3=4;k3<=6;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=7&&j<=9)
                          {for(k2=4;k2<=6;k2++)
                               for(k3=7;k3<=9;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}}
                    if(i>=7&&i<=9)
                      {if(j>=1&&j<=3)
                          {for(k2=7;k2<=9;k2++)
                               for(k3=1;k3<=3;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=4&&j<=6)
                          {for(k2=7;k2<=9;k2++)
                               for(k3=4;k3<=6;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=7&&j<=9)
                          {for(k2=7;k2<=9;k2++)
                               for(k3=7;k3<=9;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}}
                    for(k=1;k<=9;k++)
                        v[k]=0;
                    for(k9=1;k9<=9;k9++)
                        {for(k10=1;k10<=9;k10++)
                             if(a[k9][k10]>=1&&a[k9][k10]<=9)
                                {aux=a[k9][k10];
                                 v[aux]++;
                                 for(k=1;k<=9;k++)
                                     if(v[k]>=2)
                                        d++;}
                         for(k=1;k<=9;k++)
                             v[k]=0;}
                    for(k9=1;k9<=9;k9++)
                        {for(k10=1;k10<=9;k10++)
                             if(a[k10][k9]>=1&&a[k10][k9]<=9)
                               {aux=a[k10][k9];
                                v[aux]++;
                                for(k=1;k<=9;k++)
                                    if(v[k]>=2)
                                      d++;}
                         for(k=1;k<=9;k++)
                             v[k]=0;}
             if(d>0)
               r2++;
            if(r2==0&&r==0)
               {s++; aj2=o;}
              a[i][j]=aj;}
        if(s==1)
           {a[i][j]=aj2;
           o10++;}}
     if(s>0)
        {ok==1; s=0;}
        else
        {ok==0; s=0;}}

if(o10==d5)
    cout<<"Jocul poate fi completat";
    else
        cout<<"Jocul nu poate fi completat";

Am adaugat la while ok.. Daca dupa o parcurge nu se adauga niciun numar (s2=0) Nu se mai parcurge a doua ora .. si am rezolvat problema de la i si j insa tot nu merge.... Adica merge doar prima parte..
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Sudoku : Mai 12, 2014, 20:45:48
Deci...
Incerc sa fac un program care sa verifice daca niste numere pot constitui un joc de sudoku intr-o matrice si daca poate fi completata;
Partea cu verificatul daca numerele sunt asezate corect ruleaza dar cea de-a doua nu!
Cod:
#include <iostream>
#include <fstream>


using namespace std;

int main()
{
    ifstream f("sudoku.in");
    ofstream g("sudoku.out");
    int  a[10][10],i,j,k2,k3,d2=0,r=0,r2=0,k,d=0,aux,v[10],d5=0,s,o10=0,o,aj,aj2;
    for(i=1;i<=9;i++)
        for(j=1;j<=9;j++)
            {f>>a[i][j];
            if(a[i][j]>0)
               d5++;}
    d5=81-d5;
    for(i=1;i<=9;i++)
        for(j=1;j<=9;j++)
            if(a[i][j]>=1&&a[i][j]<=9)
           { if(i>=1&&i<=3)
               {if(j>=1&&j<=3)
                  {for(k2=1;k2<=3;k2++)
                      for(k3=1;k3<=3;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}
                if(j>=4&&j<=6)
                  {for(k2=1;k2<=3;k2++)
                      for(k3=4;k3<=6;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}
                if(j>=7&&j<=9)
                  {for(k2=1;k2<=3;k2++)
                      for(k3=7;k3<=9;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++;
                    d2=0;}}
             if(i>=4&&i<=6)
               {if(j>=1&&j<=3)
                  {for(k2=4;k2<=6;k2++)
                      for(k3=1;k3<=3;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}
                if(j>=4&&j<=6)
                  {for(k2=4;k2<=6;k2++)
                      for(k3=4;k3<=6;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}
                if(j>=7&&j<=9)
                  {for(k2=4;k2<=6;k2++)
                      for(k3=7;k3<=9;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}}

             if(i>=7&&i<=9)
               {if(j>=1&&j<=3)
                  {for(k2=7;k2<=9;k2++)
                      for(k3=1;k3<=3;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}
                if(j>=4&&j<=6)
                  {for(k2=7;k2<=9;k2++)
                      for(k3=4;k3<=6;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}
                if(j>=7&&j<=9)
                  {for(k2=7;k2<=9;k2++)
                      for(k3=7;k3<=9;k3++)
                          if(a[i][j]==a[k2][k3])
                             d2++;
                  if(d2>=2)
                    r++; d2=0;}}}
    for(k=1;k<=9;k++)
            v[k]=0;
    for(i=1;i<=9;i++)
        {for(j=1;j<=9;j++)
            if(a[i][j]>=1&&a[i][j]<=9)
            {aux=a[i][j];
            v[aux]++;
        for(k=1;k<=9;k++)
            if(v[k]>=2)
               d++;}
        for(k=1;k<=9;k++)
            v[k]=0;}
    for(k=1;k<=9;k++)
            v[k]=0;
    for(i=1;i<=9;i++)
        {for(j=1;j<=9;j++)
            if(a[j][i]>=1&&a[j][i]<=9)
            {aux=a[j][i];
            v[aux]++;
        for(k=1;k<=9;k++)
            if(v[k]>=2)
               d++;}
        for(k=1;k<=9;k++)
            v[k]=0;}
    for(k=1;k<=9;k++)
            v[k]=0;
    if(d>0)
        r2++;
    if(r2>0||r>0)
       cout<<"Numerele nu sunt asezate corect";
    if(r2==0&&r==0)
        cout<<"Numerele sunt asezate corect";
   while(o10<1)
   for(i=1;i<=9;i++)
       for(j=1;j<=9;j++)
           if(a[i][j]==0)
              {s=0;
               for(o=1;o<=9;o++)
                  {aj=a[i][j]; d2=0; d=0; r=0; r2=0;
                  a[i][j]=o;
                  if(i>=1&&i<=3)
                    {if(j>=1&&j<=3)
                        {for(k2=1;k2<=3;k2++)
                             for(k3=1;k3<=3;k3++)
                                 if(a[i][j]==a[k2][k3])
                                    d2++;
                         if(d2>=2)
                            r++; d2=0;}
                     if(j>=4&&j<=6)
                        {for(k2=1;k2<=3;k2++)
                             for(k3=4;k3<=6;k3++)
                                 if(a[i][j]==a[k2][k3])
                                    d2++;
                         if(d2>=2)
                            r++; d2=0;}
                    if(j>=7&&j<=9)
                       {for(k2=1;k2<=3;k2++)
                            for(k3=7;k3<=9;k3++)
                                if(a[i][j]==a[k2][k3])
                                   d2++;
                        if(d2>=2)
                          r++; d2=0;}}
                   if(i>=4&&i<=6)
                      {if(j>=1&&j<=3)
                          {for(k2=4;k2<=6;k2++)
                               for(k3=1;k3<=3;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=4&&j<=6)
                          {for(k2=4;k2<=6;k2++)
                               for(k3=4;k3<=6;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=7&&j<=9)
                          {for(k2=4;k2<=6;k2++)
                               for(k3=7;k3<=9;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}}
                    if(i>=7&&i<=9)
                      {if(j>=1&&j<=3)
                          {for(k2=7;k2<=9;k2++)
                               for(k3=1;k3<=3;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=4&&j<=6)
                          {for(k2=7;k2<=9;k2++)
                               for(k3=4;k3<=6;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}
                       if(j>=7&&j<=9)
                          {for(k2=7;k2<=9;k2++)
                               for(k3=7;k3<=9;k3++)
                                   if(a[i][j]==a[k2][k3])
                                      d2++;
                           if(d2>=2)
                              r++; d2=0;}}
                    for(k=1;k<=9;k++)
                        v[k]=0;
                    for(i=1;i<=9;i++)
                        {for(j=1;j<=9;j++)
                             if(a[i][j]>=1&&a[i][j]<=9)
                                {aux=a[i][j];
                                 v[aux]++;
                                 for(k=1;k<=9;k++)
                                     if(v[k]>=2)
                                        d++;}
                         for(k=1;k<=9;k++)
                             v[k]=0;}
                    for(i=1;i<=9;i++)
                        {for(j=1;j<=9;j++)
                             if(a[j][i]>=1&&a[j][i]<=9)
                               {aux=a[j][i];
                                v[aux]++;
                                for(k=1;k<=9;k++)
                                    if(v[k]>=2)
                                      d++;}
                         for(k=1;k<=9;k++)
                             v[k]=0;}
             if(d>0)
               r2++;
            if(r2==0&&r==0)
               {s++; aj2=o;}
              a[i][j]=aj;}
        if(s==1)
           {a[i][j]=aj2;
           o10++;}}
if(o10==d5)
    cout<<"Jocul poate fi completat";
    for(i=1;i<=9;i++)
        for(j=1;j<=9;j++)
            g<<a[i][j];









    g.close();
    f.close();
    return 0;

}


Si acum sa explic ce am facut...Partea care nu ruleaza incepe de la while.
Parcurg matricea ... Daca un elemnt este egal cu 0 (adica nu e nimic) se verifica cate numere pot ocupa acel spatiu. Daca doar un numar , acel spatiu este ocupa de nr respectiv.
Cand spun ca nu ruleaza ma refer la faptul ca nu se mai intampla nimic....
Apropo ...uitati o matrice valida


5 3 7 0 8 0 0 2 0
0 6 0 3 9 7 8 0 0
0 0 9 0 5 0 0 0 0
0 1 3 0 2 0 0 0 4
0 2 6 0 0 0 9 3 0
4 0 0 0 7 0 2 6 0
0 0 0 0 4 0 3 0 0
0 0 1 9 6 2 0 7 0
0 4 0 0 3 0 1 9 2

care ar fi trebuit sa fie completata..
4  infoarena - concursuri, probleme, evaluator, articole / Informatica / De la x la y : Martie 18, 2014, 16:21:13
Deci .. incerc sa fac un program care sa indice cat timp este intre ora x si ora y....
Eu am trecut orele in secunde ... le-am scazut.. si mi-a dat secundele intervalului..
am scazut cate o secunda iar la fiecare 60 secunde scazute am crescut am crescut un minute.... cele ramas sunt secundele
Daca minutele sunt peste sau egale cu 60 am facut la fel ca si cu secundele pt a afla orele...
Insa nu stiu ce nu merge..
Programul mai jos... Vreau sa stiu unde am gresit aici ,, nu sa-l faca cineva ...stiu sa continui si vreau sa-l fac singur .. Dar chiar nu stiu de ce nu merge din ce am facut pana acum.


#include <iostream>

using namespace std;

int main()
{ int o,m,s,o2,m2,s2,p2,p,d,nr=0,nr2=0,g=0,g1=0;
cin>>o>>m>>s>>o2>>m2>>s2;
o=o*3600; m=m*60; p=o+m+s;
o2=o2*3600; m2=m2*60; p2=o2+m2+s2;
if(p2>p)
{d=p2-p;
if(d>=60)
{while(d!=0)
{d--;
nr++; //secundele
if(nr=60)
{g++;
nr=0;}}}
if(g>=60)
{while(g!=0)
{g--; //minutele
nr2++;
if(nr2=60)
{g1++; //orele
g=0;}}}
else
g1=0;}
cout<<g1<<" "<<g<<" "<<nr;
return 0;
}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines