Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- /**
- 9. Irjuk ki az összes n számjegybôl álló számot, amelyben a számjegyek
- összege egy s természetes szám.
- Pl: ha n=4 és s=5, akkor a számok 1004, 1013, 1022, ...*/
- using namespace std;
- int v[30],n,s,ossz=0;
- int helyes(int i, int k)
- {
- if(k==1 && i==0) return 0;
- if(ossz+i>s) return 0;
- return 1;
- }
- int megoldas(int k)
- {
- if(ossz==s && k==n) return 1;
- return 0;
- }
- void kiir()
- {
- for(int i=1;i<=n;i++)
- cout<<v[i];
- cout<<" "<<endl;
- }
- void back(int k)
- {
- for(int i=0;i<=s;i++)
- if(helyes(i,k))
- {
- v[k]=i;
- ossz=ossz+i;
- if(megoldas(k)) kiir();
- else if (k<n) back(k+1);
- ossz=ossz-i;
- }
- }
- int main()
- {
- cout<<"N ";cin>>n;
- cout<<"S ";cin>>s;
- back(1);
- return 0;
- }
- +++++++++++++++++++++++++++
- #include <iostream>
- /**
- 9. Irjuk ki az összes n számjegybôl álló számot, amelyben a számjegyek
- összege egy s természetes szám.
- Pl: ha n=4 és s=5, akkor a számok 1004, 1013, 1022, ...*/
- using namespace std;
- int v[30],n,s,ossz=0;
- int helyes(int i, int k)
- {
- if(k==1 && i==0) return 0;
- if(ossz+i>s) return 0;
- return 1;
- }
- int megoldas(int k)
- {
- if(ossz==s && k==n) return 1;
- return 0;
- }
- void kiir()
- {
- for(int i=1;i<=n;i++)
- cout<<v[i];
- cout<<" "<<endl;
- }
- void back(int k)
- {
- for(int i=0;i<=s;i++)
- if(helyes(i,k))
- {
- v[k]=i;
- ossz=ossz+i;
- if(megoldas(k)) kiir();
- else if (k<n) back(k+1);
- ossz=ossz-i;
- }
- }
- int main()
- {
- cout<<"N ";cin>>n;
- cout<<"S ";cin>>s;
- back(1);
- return 0;
- +++++++++++++++++++++++++++++++++++
- #include <iostream>
- /**
- 20. Irjuk ki az összes számot úgy, hogy db1 darab 1-es, db2 darab 5-ös
- és db3 darab 8-as legyen benne.
- Pl: 2 darab 1-es, 1 darab 5-ös, 3 darab 8-as-ra:
- 115888
- 151888
- 188158 stb*/
- using namespace std;
- ///altalanosan irjuk, nem db-okkal
- int v[50],n,szj[10],db[50],h=0;
- void kiir()
- {
- for(int i=1;i<=h;i++)
- cout<<szj[v[i]];
- cout<<" ";
- }
- int helyes(int i, int k)
- {
- int x=0;
- for(int j=1;j<=k-1;j++)
- if(i==v[j]) x++;
- if(x<db[i]) return 1;
- return 0;
- }
- void back(int k)
- {
- for(int i=1;i<=n;i++)
- if(helyes(i,k))
- {
- v[k]=i;
- if(k==h) kiir();
- else back(k+1);
- }
- }
- int main()
- {
- cout<<"Hany szamjegy van? ";cin>>n;
- for(int i=1;i<=n;i++)
- {
- cin>>szj[i]>>db[i];
- h=db[i]+h;
- }
- back(1);
- return 0;
- }
- +++++++++++++++++++++++++++++++
- #include <iostream>
- /**
- 23. A 0, 1, 2, 3 és 4 számjegyekbôl hány olyan valódi ötjegyû szám ír-
- ható fel, amelyben legalább az egyik ismétlôdik? Irjuk ki ezeket a számokat!*/
- using namespace std;
- int v[50],db[50]={0};
- int helyes(int i, int k)
- {
- if(k==1 && i==0) return 0;
- }
- void kiir()
- {
- int a[50]={0}, jo=0;
- for(int i=1; i<=5;i++)
- a[v[i]]=a[v[i]]+1;
- for(int i=0;i<=9;i++)
- if(a[i]>1) jo=1;
- if(jo==1)
- {
- for(int i=1;i<=5;i++)
- cout<<v[i];
- cout<<endl;
- }
- }
- void back(int k)
- {
- for(int i=0;i<=4;i++)
- {
- if(helyes(i,k))
- {
- v[k]=i;
- if(k==5) kiir();
- else back(k+1);
- }
- }
- }
- int main()
- {
- back(1);
- return 0;
- }
- +++++++++++++++++++++++++++++++++
Add Comment
Please, Sign In to add comment