[Logo] Mendo Judge Discussion Board - Forums
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
Броеви  XML
Forum Index » Задачи од национални натпревари
Author Message
CyberMKD



Joined: 05/01/2014 17:43:58
Messages: 3
Offline

Здраво на сите, уште ме мачи задачата од електронскиот натпревар „Броеви“ (трета).
Перо и Емил играат интересна игра со броеви. Како дел од играта, тие имаат неколку карти на кои се запишани цифрите од 0-9 (една цифра на една карта). Целта на играта е да се создаде најголемиот можен број, користејќи ги цифрите напишани на картите, но кој не содржи две соседни цифри кои се со иста парност (т.е., не смеат двете цифри да бидат парни, или двете да бидат непарни).

(Забелешка: За еден цел број велиме дека е парен доколку тој се дели со 2. Во спротивно, за бројот велиме дека е непарен. Бројот 0 е парен број).

На пример, користејќи ги картите со цифри 1, 2 и 3, може да се состават броевите 1, 2, 3, 12, 21, 23, 32, 123 и 321 но не 13, 31, 132, 213, 231 или 312 (бидејќи не е дозволено тие да имаат две непарни цифри [1 и 3] една до друга). Слично, користејќи карти со цифрите 6, 8, 7 и 8, може да се состават броевите 67, 678, 878, итн, но, на пример, не и бројот 8786 (бидејќи тој содржи две парни цифри кои се наоѓаат една до друга).
Бидејќи Перо многу сака да го победи Емил, тој одлучил да побара од вас да напишете програма која ќе го најде и отпечати најголемиот број кој може да се состави (според текстот на задачата прикажан погоре).
Влез
Во првата линија се наоѓа еден цел број N (1 <= N <= 8 ), кој го означува бројот на карти. Во втората линија се наоѓаат N цели броеви (0-9), одделени со по еден знак за празно место, кои ги означуваат цифрите запишани на картите.
Излез
Отпечатете го најголемиот број кој може да се состави користејќи ги цифрите запишани на картите.


сите алгоритми што ги смислив не функционираа како што треба и не можев да ги реализирам... од Вас барам било каква идеа на алгоритам за задачава (опишано во неколку чекори)

This message was edited 1 time. Last update was at 01/03/2014 02:35:22

bedzo



Joined: 18/01/2011 02:05:03
Messages: 234
Offline

Направи го најголемиот број што почнува со парна цифра и направи го најголемиот број што почнува со непарна, после само спореди
danidjordjevic



Joined: 26/02/2013 10:58:15
Messages: 1
Offline

Јас вака ја решив. Ќе беше пократка со функции но уште не сме ги учеле.
Идејата е да се направат две низи со парни и со непарни броеви па тие да се сортираат од најголема до најмала. Првата цифра е најголемиот број од подолгата низа и наизменично се земаат цифрите. Ако двете низи се со еднаква должина за првата цифра се зема поголемиот прв број од двете низи.
Можеби некој има побрзо решение? Не знам ова со двата најголеми броеви дали ќе беше пократко.

‪#‎include‬ <iostream>
#include <cstdlib>
using namespace std;
int main ()
{
int i, j, k, l, n, t, pocetok, imaks, indeks, karta[8], broj, parna[8], neparna[8];

cin>>n;
k=0, l=0;
for (i=0;i<n;i++)
{
cin>>karta[i];
if (karta[i]%2==0) {parna[k]=karta[i];k++;}
else {neparna[l]=karta[i];l++;}
}
//sortiranje
for (pocetok=0; pocetok<k-1; pocetok++)
{
imaks=pocetok;
for (j=pocetok+1; j<k; j++)
{
if (parna[j]>parna[imaks]) imaks=j;
}

t=parna[imaks];
parna[imaks]=parna[pocetok];
parna[pocetok]=t;
}

for (pocetok=0; pocetok<l-1; pocetok++)
{
imaks=pocetok;
for (j=pocetok+1; j<l; j++)
{
if (neparna[j]>neparna[imaks]) imaks=j;
}

t=neparna[imaks];
neparna[imaks]=neparna[pocetok];
neparna[pocetok]=t;
}

if (k==l)
{
if (parna[0]>neparna[0])
{
broj=parna[0]*10+neparna[0];
for (j=1;j<k;j++)
{
broj=broj*100+parna[j]*10+neparna[j];
}
}
else
{
broj=neparna[0]*10+parna[0];
cout<<"broj pred for"<<broj;
for (j=1;j<k;j++)
{
broj=broj*100+neparna[j]*10+parna[j];

}
}
}

if (k>l)
{
broj=parna[0];
for (j=0;j<l;j++)
{
broj=broj*100+neparna[j]*10+parna[j+1];
}
}
if (k<l)
{
broj=neparna[0];
for (j=0;j<k;j++)
{
broj=broj*100+parna[j]*10+neparna[j+1];
}
}
cout<<broj;
system ("pause");
return 0;
}
 
Forum Index » Задачи од национални натпревари
Go to:   
Powered by JForum 2.1.8 © JForum Team