Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int x[100],n,nr,k1;
- void tipar(){
- for(int i = 1; i <= k1; i++){
- cout<<x[i]<<",";
- }
- cout<<"\n";
- nr++;
- }
- int succesor(int k){
- if(x[k] < n){
- x[k]++;
- return 1;
- }
- return 0;
- }
- int valid(int k){
- for(int i = 1; i <= k-1; i++)
- if(x[i] == x[k])
- return 0;
- if(x[k-1] > x[k])
- return 0;
- return 1;
- }
- void backtracking(){
- int as,ev,k;
- k = 1;
- while(k>0){
- do {
- as = succesor(k);
- if(as)
- ev = valid(k);
- } while(as && !ev);
- if(as)
- {
- if(k == k1)
- tipar();
- else{
- k++;
- x[k] = 0;
- }
- }
- else{
- k--;
- }
- }
- }
- int main(){
- cout<<"n = ";cin>>n;
- cout<<"k1 = ";cin>>k1;
- backtracking();
- cout<<"nr solutii "<<nr;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement