Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 20(numar, n cifre, aceeași paritate):
- #include <iostream>
- using namespace std;
- int n, st[20], l[20], c[20], k;
- void init(){
- st[k]=-1;
- }
- int succesor(){
- if(st[k]<n){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i;
- if(st[1] == 0) return 0;
- for(i=1; i<k; i++){
- if(st[i]%2 != st[i+1]%2)
- return 0;
- }
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- for(i=1; i<=k; i++)
- cout<<st[i];
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- cin>>n;
- back();
- }
- 21(numar, n cifre distincte, cifrele divizibile cu 4):
- #include <iostream>
- using namespace std;
- int n, st[20], l[20], c[20], k;
- void init(){
- st[k]=-1;
- }
- int succesor(){
- if(st[k]<9){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i;
- if(st[1] == 0) return 0;
- if(st[k]%4!=0) return 0;
- for(i=1; i<k; i++){
- if(st[i] == st[k])
- return 0;
- }
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- for(i=1; i<=k; i++)
- cout<<st[i];
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- cin>>n;
- back();
- }
- 22(număr, n cifre, să nu existe 2 cifre pare alăturate):
- #include <iostream>
- using namespace std;
- int n, st[20], l[20], c[20], k;
- void init(){
- st[k]=-1;
- }
- int succesor(){
- if(st[k]<9){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i;
- if(st[1] == 0) return 0;
- for(i=1; i<k; i++){
- if(st[i] == st[k])
- return 0;
- if(st[k]%2==0 && st[k-1]%2==0)
- return 0;
- }
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- for(i=1; i<=k; i++)
- cout<<st[i];
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- cin>>n;
- back();
- }
- 23(numar, 6 cifre, 3 din ele sunt 0):
- #include <iostream>
- using namespace std;
- int n, st[20], l[20], c[20], k;
- void init(){
- st[k]=-1;
- }
- int succesor(){
- if(st[k]<9){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i, z=0;
- if(k==n){
- for(i=1; i<=k; i++){
- if(st[i]==0) z++;
- }
- if(z!=3) return 0;
- }
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- cout<<4;
- for(i=1; i<=k; i++)
- cout<<st[i];
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- n=5;
- back();
- }
- 24(n mărgele, m culori - alăturatele distincte):
- #include <iostream>
- using namespace std;
- int n, m, st[20], l[20], c[20], k;
- void init(){
- st[k]=0;
- }
- int succesor(){
- if(st[k]<m){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i;
- if(k>=2 && st[k] == st[k-1]) return 0;
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- for(i=1; i<=k; i++)
- cout<<st[i]<<" ";
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- cin>>n>>m;
- back();
- }
- 25(studenți, zile):
- #include <iostream>
- using namespace std;
- int n, st[20], l[20], c[20], k;
- void init(){
- st[k]=-1;
- }
- int succesor(){
- if(st[k]<1){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i, c=0;
- if(k==n){
- for(i=1; i<=k; i++)
- if(st[i]==1) c++;
- if(c!=4) return 0;
- }
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- for(i=1; i<=k; i++)
- cout<<st[i]<<" ";
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- n = 8;
- back();
- }
- 25(siruri, 1-4, alaturate aceeași paritate):
- #include <iostream>
- using namespace std;
- int n, st[20], l[20], c[20], k;
- void init(){
- st[k]=0;
- }
- int succesor(){
- if(st[k]<4){
- st[k]++;
- return 1;
- }
- return 0;
- }
- int valid(){
- int i;
- if(k>=2)
- if(st[k]%2 != st[k-1]%2) return 0;
- return 1;
- }
- int solutie(){
- return k==n;
- }
- void tipar(){
- int i;
- for(i=1; i<=k; i++)
- cout<<st[i];
- cout<<endl;
- }
- void back(){
- int as;
- k=1;
- init();
- while(k>0){
- do{}while((as=succesor())&&!valid());
- if(as==1){
- if(solutie()==1){
- tipar();
- }else{
- k++;
- init();
- }
- }else{
- k--;
- }
- }
- }
- int main(){
- cin>>n;
- back();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement