Voi come lo risolvereste?
Io (che di ricorsione non ci mastico ancora molto) l ho risolto col seguente codice, ma l'output è a dir poco insensato...
Codice: Seleziona tutto
#include <iostream>
#include <stdlib>
#include <fstream>
void sort (int[][2], int);
void nimbus (int[][2], int, int, int, int&);
int magg (int[][2], int, int);
int main()
{
int n;
int i;
ifstream f1 ("nimbus_reg_input.txt");
f1>>n;
int a[n][2];
for (i=0; i<n>>a[i][0];
f1>>a[i][1];
}
f1.close();
sort (a, n);
int x=0;
int cont=0;
nimbus (a, n, x, 0, cont);
ofstream f2 ("nimbus_reg_output.txt");
f2<<cont>=1; j--)
{
for (i=0; i<j>a[i+1][0])
{
temp=a[i][0];
a[i][0]=a[i+1][0];
a[i+1][0]=temp;
temp=a[i][1];
a[i][1]=a[i+1][1];
a[i+1][1]=temp;
}
}
}
}
void nimbus (int a[][2], int n, int x, int c, int& cont)
{
int i;
for (i=x; i<n>cont)
cont=c;
if (a[i][1]<=a[n][1])
{
int f = magg (a, n, i);
nimbus (a, n, f, c, cont);
}
}
}
int magg (int a[][2], int n, int i)
{
int j;
for (j=i; j<n; j++)
{
if (a[i][1]<=a[j][0])
break;
}
return j;
}
(Il sito italiano delle oli non va...)
Grazie
Ciao
EDIT: ho variato qualcosa nel codice; ora è un po' più sensato, ma comunque sbagliato...