Informatică, întrebare adresată de ZOUKYE, 9 ani în urmă

Se dă o matrice cu n linii și m coloane și elemente numere naturale. Determinați pentru câte dintre elementele matricei toți vecinii au valori diferite între ele.
C++ pls

Răspunsuri la întrebare

Răspuns de Ouroboros
26
Raspuns:
#include <iostream>
using namespace std;
int n,m,a[103][103],i,j,k;
int main()
{
  cin>>n>>m;
  for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        cin>>a[i][j];

for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        if(a[i][j]!=a[i][j-1] && a[i][j]!=a[i-1][j] && a[i][j]!=a[i+1][j] && a[i][j]!=a[i][j+1])
            k++;
    cout<<k<<" ";

  return 0;
}



BONUS:

//Problema #1377, rezolvare 100p de Ouroboros

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    long x,MIN=1000000001,MAX=0,nrdiv,contor=1,b,a,n,nr;
      ifstream fin("maxd.in");
    ofstream fout("maxd.out");
    fin>>a>>b;
    while(a<=b)
    {
    nrdiv=1;
    x=2;
    n=b;
    while(n>1)
    {
       if(x*x>n)
            x=n;
       if(n%x==0)
       {
           nr=0;
           while(n%x==0)
           {
               nr++;
               n/=x;
           }
        nrdiv*=nr+1;
       }
       x=x+1;
    }

    if(nrdiv>MAX)
        {
        MAX=nrdiv;
        contor=1;
        MIN=b;
        }

    else if (nrdiv==MAX)
        {
        contor++;
        MIN=b;
        }
    b--;
    }
      fout<<MIN<<' '<<MAX<<' '<<contor<<'\n';
    return 0;
}

//Problema #1131, "Arc", rezolvare 100p de Ouroboros

#include <fstream>
using namespace std;

ifstream fin("arc.in");
ofstream fout("arc.out");
int a[10001],i,k,f[10001],p,n,x,lmax,v;
void v1()
{
    int secventa=1;
    for(i=1;i<=n;++i)
       fin>>a[i];
    for(i=2;i<=n;++i)
        if(a[i-1]!=a[i])
            secventa++;
    fout<<secventa<<'\n';
}
void v2()
{
    f[1]=1;
    k=1;
    lmax=1;
   fin>>a[1];
    for(i=2;i<=n;++i)
    {
        fin>>x;
        if(x==a[k])
            f[k]++;
        else
        {
            if(f[k]>lmax)
                lmax=f[k];
            a[++k]=x;
            f[k]=1;
        }
    }
    n=k;
}
void v3()
{
    lmax=1;
    for(i=1;i<=n;++i)
        if(f[i]>lmax)
            lmax=f[i],k=i;
    i=0;
    if(lmax>2)
    {
        while(k-i>0 && k+i<=n && a[k-i]==a[k+i] && f[k-i]+f[k+i]>2)
            i++;
        if (k-i>0 and k+i<=n and a[k-i]==a[k+i])
        {
            f[k-i]+=f[k+i];
            for (p=k+i+1;p<=n;++p)
            {
                a[p-2*i]=a[p];
                f[p-2*i]=f[p];
            }
            n=n-2*i;
        }
        else
        {
            for (p=k+i;p<=n;++p)
            {
                a[p-2*i+1]=a[p];
                f[p-2*i+1]=f[p];
            }
            n=n-2*i+1;
        }
    }

}
int main()
{
   fin>>v>>n;
    if(v==1)
        v1();
    if(v==2)
    {   v2();
        while(lmax>2)
            v3();
        int s=0;
        for(i=1;i<=n;++i)
            s+=f[i];
        fout<<s<<'\n';
        for(i=1;i<=n;++i)
            for (int j=1;j<=f[i];++j)
                fout<<a[i]<<'\n';
    }
    return 0;
}



//Problema #1446, "Memory002", rezolvare 100p de Ouroboros
//Modul de lucru e acelasi ca si la memory005. Practic, citesti din fisier de 2 ori, si declari toate variabilele globale.
//Astfel, utilizezi minimum de memorie, cu 0 in stiva. Nu uita sa folosesti 2 nume diferite pentru prima intrare si pentru a doua
//De exemplu, eu am folosit pentru prima citire "fin" si pentru a doua "fin1".
//Cam atat. Mult succes !

#include <iostream>
#include <fstream>
using namespace std;
int n,x,i,mini=2000000001,maxi=-2000000001,pozmin,pozmax;
long long S;
ifstream fin("memory002.in");
ifstream fin1("memory002.in");
ofstream fout("memory002.out");
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        if(x<mini)
            mini=x,pozmin=i;
        if(x>maxi)
            maxi=x,pozmax=i;
    }
    fin.close();
    if(pozmin>pozmax)
        swap(pozmin,pozmax);
    fin1>>n;
    for(i=1;i<pozmin;i++)
        fin1>>x;
    for(i=pozmin;i<=pozmax;i++)
    {
        fin1>>x;
        S=S+x;
    }
    fout<<S;
    return 0;

}


Alte întrebări interesante