Flawiusz Flawiusz


Problem Józefa Flawiusza)

Napisz procedurę Flawiusz(var l:lista; k:integer), która dla danego k
> 0 i niepustej cyklicznej listy l, cyklicznie usuwa co k-ty element
listy l, aż pozostanie w niej tylko jeden element. Liczenie rozpoczynamy
od elementu wskazywanego przez l.

Rozwiązanie 1

[schowaj]

procedure Flawiusz(var l:lista; k:integer);
//Usuwamy z listy l cyklicznie co k-ty element dopóki nie zostanie jeden
element; k>0, l niepusta cykliczna
var poprz, pom: lista;
begin
poprz:=l^.nast;
while poprz^.nast <> l do poprz:=poprz^.nast; //poprz wskazuje
na element poprzedzający l
while poprz <> poprz^.nast do begin //dopóki lista
ma więcej niz jeden element
for i:=1 to k-1 do poprz:=poprz^.nast;
pom:=poprz^.nast;
poprz^.nast:=pom^.nast;
dispose(pom);
end;
l:=poprz;
end;







clude
#include
#include
#include
#include

using namespace std;

int main()
{
int n, m, k;
int b =0;
int d=0;
int usuwamy [500];
int wygrani [500];
queue kolo;

while(true)
{
b=0;
d=0;
cin>>n; //wszyscy
if(n==0) break;
cin>>m; //wybrani



cin>>k; //od ktorego usuwamy
if(n<0 || m<0 || k<0) break;
if(m>n || k>n) break;

if(n==m)
{
cout< for(int y=1; y {
if(y==m)
{cout< else
{cout< }
}


else
{
for(int i=1; i for(int a=1; a {
int poczatek=kolo.front();
kolo.pop();
kolo.push(poczatek);
}
usuwamy[b] = kolo.front();
b++;
kolo.pop();
while(kolo.size()>m)
{
for(int c=0; c {
int poczatek2=kolo.front();
kolo.pop();
kolo.push(poczatek2);
}
usuwamy[b]=kolo.front();
b++;
kolo.pop();
}



for(int c=0; c {
wygrani[d] = kolo.front();
d++;
kolo.pop();
}
sort( wygrani, wygrani+m);

for(int e=0; e {
if(e==b-1)
cout< else
cout< }
for(int f=0; f {
if(f==m-1)
cout< else
cout< }

}
}



return 0;
}

>
> http://www.csharp.pl/viewtopic.php?f=4&t=437&start=0

Wyszukiwarka

Podobne podstrony:
Flawiusz Wojna żydowska
Flawiusz Arrian Indica
Flawiusz Przeciw Apionowi

więcej podobnych podstron