[Noti-aed] Holsman Juan Manuel TPL ejercicio PROM_SUBC
Juan Holsman
holsman97 en gmail.com
Mar Nov 22 17:13:25 -03 2022
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://venus.santafe-conicet.gov.ar/pipermail/noti-aed/attachments/20221122/ff296cf6/attachment-0001.html>
------------ próxima parte ------------
#define USECHRONO
#undef HAVE_MPI
#include "eval.hpp"
#include <cassert>
#include <climits>
#include <cstdlib>
#include <stack>
#include <unistd.h>
#include <set>
#include <list>
using namespace aed;
using namespace std;
//---:---<*>---:---<*>- COMIENZA CODIGO FUNCION --:---<*>---:---<*>---:---<*>
// COMPLETAR DNI y NOMBRE AQUI:
// Nombre: Bob Esponja
int DNI=23456789;
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
void subk(set<int> &S, set<int> C, set<int>::iterator itS, list<set<int>> &LK)
{
if (itS == S.end()) return;
// LK.insert(LK.begin(),C);
//almacena set actual
set<int> D = C;
//agrego *itS a C
C.insert(C.end(), *itS);
itS++;
// se agrega C a la lista si C.size = k
// if (C.size() == k)
LK.insert(LK.end(),C);
//bifurcación:
//Rama 1: agregando
subk(S,C,itS,LK);
//Rama 2: no agregando
subk(S,D,itS,LK);
}
//wrapper
list<set<int>> subk(set<int> &S)
{
set<int> C;
C.clear();
list<set<int>> LK;
set<int>::iterator itS = S.begin();
subk(S,C,itS,LK);
return LK;
}
bool prom_subc(set<int> &S) {
// COMPLETAR
int sum=0;
set<int>::iterator it=S.begin();
while(it!=S.end()){
sum+=*it;
it++;
}
int t=S.size();
int prom=sum/t;
if(prom==0 || prom==-0) return true;
list<set<int>> LK= subk(S);
list<set<int>>::iterator itLK=LK.begin();
while(itLK!=LK.end()){
set<int>saux= *itLK;
set<int>::iterator itS=saux.begin();
int sum=0;
while(itS!=saux.end()){
sum+=*itS;
itS++;
}
if(sum==prom) return true;
itLK++;
}
return false;
}
int main() {
Eval ev;
int vrbs = 0;
ev.eval<1>(prom_subc,vrbs);
return 0;
}
Más información sobre la lista de distribución Noti-AED