Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 496 Rj : Septembrie 29, 2014, 22:01:34
buna,
nu stiu sa citesc matricea de caractere  Brick wall  Cry ,nu stiu sa folosesc <cstudio>  Fighting ...imi poate arata cineva o metoda cu <fstream>? Very Happy
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 824 Insule : Septembrie 28, 2014, 21:56:45
am facut problema ,am citit pe o matrice de tip char apoi am am trecut toate datele pe o matrice normala,pe datele de pe problema
imi da 4 2 3 4;dar cand am trimis problema am luat 0 puncte  Cry ,de ce? te poti uita putin peste programul meu ? multumesc  anticipat ! Smile

#include <fstream>
#include <iomanip>
using namespace std;
ifstream x("insule.in");
ofstream y("insule.out");
struct lee
 {
     int lin,col;
 };
int dl[]={-1,0,1,0};//deplasarea pe linie
int dc[]={0,1,0,-1};//deplasarea pe coloana

char a[101][101];/*arhipelagul  cu insule,este de tip char
pt ca datele din matrice pe linie nu sunt separate prin spatiu*/

int i,j,m,n,prim,ultim,k,b[101][101],insule[4],limita;/*am facut
o copiiea arhipelaguluide tip int pentru ca pe char
nu pot prelucra datele,iar limitele le voi folosi in mai jos
in conditia de continuitate a algoritmului lui lee */

int pod,pod_min; // un pod si podul de lungime minima

lee c[10000],v,p,start; //coada,vecinul,pozitia curenta si startul


void citesc()
 {
     x>>n>>m;
     for(i=1;i<=n;i++)
       for(j=1;j<=m;j++)
         {
             x>>a[j];
             b[j]=a[j]-48;
         }

 }
void scriu()
 {

     for(i=1;i<=n;i++)
      {
           for(j=1;j<=m;j++)
             y<<setw(4)<<b[j];
           y<<'\n';

      }
     y<<"\n\n\n";
 }
void lee()
 {
     prim=ultim=0;
     c[0]=start;
     while(prim<=ultim)
      {
          p=c[prim];
          prim++;
          for(k=0;k<4;k++)
           {
               v.lin=p.lin+dl[k];
               v.col=p.col+dc[k];
               //if(b[v.lin][v.col]!=0 && b[v.lin][v.col]<100 )
               if(b[v.lin][v.col]==limita )
                {
                    b[v.lin][v.col]=b[v.lin][v.col]+100;
                    ultim++;
                    c[ultim]=v;

                }

           }

      }

 }
void p1()
 {
     for(i=1;i<=n;i++)
      for(j=1;j<=m;j++)
         {
             if(b[j]!=0 && b[j]<100)
               {
                   insule[b[j]]++;
                   start.lin=i;
                   start.col=j;
                   limita=b[j];
                   //y<<limita<<' ';
                   b[j]=b[j]+100;
                   lee();
               }
         }

 }
void lee2()/*am modificat potin lee-ul astfel incat de la start sa
sa ia directiile pe rand si la fiecare directie sa mearga in liniie
dreapnta pana cand gaseste sau nu gaseste ceva pt a fi numit pod;
daca incepe din 1 apoi parcrurgem numai zero-uri pana la un 2,il
consideram pod,daca il  consideram pod ne interesam daca este de
lungime minima... Smile  */

 {
     prim=ultim=0;
     c[0]=start;
     for(k=0;k<4;k++)
      {
          v.lin=start.lin+dl[k];
          v.col=start.col+dc[k];
          while(a[v.lin][v.col]==0)
           {
               pod++;
               v.lin+=dl[k];
               v.col+=dc[k];
           }
          if(a[v.lin][v.col]==2 && pod<pod_min)
             pod_min=pod;
           pod=0;
      }

 }
void p2()
 {
     for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
       {
           if(a[j]==1)
            {
                start.lin=i;
                start.col=j;
                lee2();
            }

       }
      y<<pod_min;
 }

int main()
{
    citesc();
    //scriu();
    p1();
    //scriu();
    for(i=1;i<=3;i++) y<<insule<<" ";
    if(m<n) pod_min=m-2;//vad care ar putea fi lungimea maxima a unui pod
        else pod_min=n-2;
    p2();


    return 0;
}
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 824 Insule : Septembrie 28, 2014, 14:18:42
buna
nu stiu cum sa citesc matricea aia fara spati intre elemente  Fighting  Cry
ma poate ajuta cineva ? Very Happy
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines