Pagini recente » Cod sursa (job #1706555) | Cod sursa (job #190427) | Cod sursa (job #567772) | Cod sursa (job #1266136) | Cod sursa (job #1410159)
//#include <fstream> //backtraking iterativ ==permutari
//using namespace std;
//ifstream fi("permutari.in");
//ofstream fo("permutari.out");
//int i,j,n;
//int a[100];
//bool ok;
//int main()
//{
// fi>>n;
// i=1;
// while(i>0){
// if(i==n+1){ //daca am ajuns la solutie o afisam
// for(j=1;j<=i-1;j++) fo<<a[j]<<" ";
// fo<<'\n';
// i--; //revenire
// }
// else //daca nu am ajuns la solutie
// if(a[i]<n){
// a[i]++; //daca se poate se creste valoarea lui a[i]
// //se verifica solitia partiala
// ok=true;
// for(j=1;j<i;j++)
// if(a[i]==a[j])ok=false;
// if(ok==true) i++; //daca sol. partiala e valida se continua
// }
// else {a[i]=0;i--;}//daca nu se poate creste valoarea lui a[i] se revine
// }
// return 0;
//}
//#include <fstream> //backtraking iterativ ==aranjamente
//using namespace std;
//ifstream fi("permut.in");
//ofstream fo("permut.out");
//int i,j,n,k;
//int a[100];
//bool ok;
//int main()
//{
// fi>>n>>k;
// i=1;
// while(i>0){
// if(i==k+1){ //daca am ajuns la solutie o afisam
// for(j=1;j<=i-1;j++) fo<<a[j]<<" ";
// fo<<'\n';
// i--; //revenire
// }
// else //daca nu am ajuns la solutie
// if(a[i]<n){
// a[i]++; //daca se poate se creste valoarea lui a[i]
// //se verifica solitia partiala
// ok=true;
// for(j=1;j<i;j++)
// if(a[i]==a[j])ok=false;
// if(ok==true) i++; //daca sol. partiala e valida se continua
// }
// else {a[i]=0;i--;}//daca nu se poate creste valoarea lui a[i] se revine
// }
// return 0;
//}
#include <fstream> //backtraking iterativ ==combinari
using namespace std;
ifstream fi("combinari.in");
ofstream fo("combinari.out");
int i,j,n,k;
int a[100];
bool ok;
int main()
{
fi>>n>>k;
i=1;
while(i>0){
if(i==k+1){ //daca am ajuns la solutie o afisam
for(j=1;j<=i-1;j++) fo<<a[j]<<" ";
fo<<'\n';
i--; //revenire
}
else //daca nu am ajuns la solutie
if(a[i]<n){
a[i]++; //daca se poate se creste valoarea lui a[i]
i++;
a[i]=a[i-1];//pt. ca elementele sol trebuie sa fie in ord. cresc
}
else {a[i]=0;i--;}//daca nu se poate creste valoarea lui a[i] se revine
}
return 0;
}
//#include <fstream> //permutari infoarena var I 100p
//using namespace std;
//ifstream f("permutari.in");
//ofstream g("permutari.out");
//int a[100], n, i, k;
//void afisare(int i){
// int j;
// for(j=1;j<=i;j++)
// g<<a[j]<<" ";
// g<<'\n';
//}
//int valid(int i){
// int j;
// for(j=1;j<i;j++)
// if(a[i]==a[j]) return 0;
// return 1;
//}
//void back(int i){
// int val;
// for(val=1;val<=n;val++){
// a[i]=val;
// if(valid(i))
// if(i==n) afisare(i);
// else back(i+1);}
//}
//int main()
//{
// f>>n;
// back(1);
// return 0;
//}
//#include <fstream> //permutari infoarena var II 100p
//using namespace std; //(fara valid-dar cu vector de viz)
//ifstream f("permutari.in");
//ofstream g("permutari.out");
//int a[100], n, i, k,viz[100];
//void afisare(int i){
// int j;
// for(j=1;j<=i;j++)
// g<<a[j]<<" ";
// g<<'\n';
//}
//void back(int i){
// int j;
// for(j=1;j<=n;j++){
// if(viz[j]==0){
// viz[j]=1;
// a[i]=j;
// if(i==n) afisare(i);
// else back(i+1);
// viz[j]=0;
// }
//}}
//int main()
//{
// f>>n;
// back(1);
// return 0;
//}
//#include <fstream>
//#include <cmath>
//
//using namespace std;
//ifstream f("combinari.in");
//ofstream g("combinari.out");
//int n, k, a[19];
//
//void init (int l) {
// a[l] = l-1;
//}
//
//bool succesor (int l) {
// a[l]++;
// return a[l] < n-(k-l)+1;
//}
//
//bool valid (int l) {
//
// return a[l-1] < a[l];
//}
//
//bool sol (int l) {
// return l == k; // Am completat toate cele n locuri?
//}
//
//void tip () {
// int i;
//
// for (i = 1; i <= k; i++)
// g << a[i] << ' ';
// g << endl;
//}
//
//void bt (int l) {
// init (l); // initializare
// while (succesor(l)) // cat timp avem un succesor
// if (valid(l)) // Sunt indeplinite conditiile?
// if (sol(l)) // Avem o solutie completa?
// tip(); // Prezentam solutia.
// else // Nu?
// bt(l+1); // Trecem la nivelul urmator.
//}
//int main()
//
//{
// f>>n>>k;
// bt(1);
// return 0;
//}
//#include <fstream>
//using namespace std;
//ifstream f("submultimi.in");
//ofstream g("submultimi.out");
//int main()
//{
// int i,j,lim,n;
// f>>n;
// lim=1<<n;
// for(i=1;i<lim;i++)
// {
// for(j=1;j<=n;j++)
// if(i&(1<<(j-1)))
// g<<j<<" ";
// g<<'\n';
// }
// return 0;
//}