Hei! Imi poate spune si mie cineva de ce nu merge algoritmul?
#include
using namespace std;
int i,n,a[11],d,c,cf,ok;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i];
d=a[i];
ok=1;
while(ok==1||d!=0)
{
c=d%10;
cf=d/10%10;
if(c>cf && d==a[i])
ok=0;
if(c>cf && d!=a[i])
{
d=d/10;
while(d==0)
{
c=d%10;
cf=d/10%10;
if(c
{
ok=0;
break;
}
}
}
d=d/10;
}
cout<
}
return 0;
}
Cerinţa
Se dau n numere naturale. Determinați, pentru fiecare dintre ele, dacă este de tip “munte”.
Problema este de pe pbinfo si se numeste NumarMunte #189.
Multumesc mult!
Răspunsuri la întrebare
Răspuns de
0
#include <iostream>
using namespace std;
int m[12], cif[12];
int descreste(int a, int b)
{
int ok=1;
for (int i=a; i<b && ok; ++i)
if (cif[i]<=cif[i+1]) ok=0;
return ok;
}
int munte(int num)
{
int nc=0;
while (num)
{
++nc; cif[nc]=num%10; num/=10;
}
int k=1;
while (cif[k]<cif[k+1] && k<nc) ++k;
if (k==1 || k==nc) return 0;
else if (descreste(k, nc)) return 1;
else return 0;
}
int main()
{
int n, i, a;
cin >> n;
for (i=1; i<=n; ++i)
{
cin >> a;
if (munte(a)) m[i]=1;
}
for (i=1; i<=n; ++i)
{
cout << m[i] << "\n";
}
return 0;
}
Alte întrebări interesante