Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 1. Se citesc n culori din fisierul de intrare steaguri.in. Sa se genereze:
- a) Toate steagurile tricolore ce se pot forma cu cele n culori.
- b) Toate steagurile tricolore ce se pot forma astfel incat acestea sa aiba in mijloc prima culoare citita din fisier.
- */
- #include <fstream>
- using namespace std;
- ifstream fin("steaguri.in");
- ofstream fout("steaguri.out");
- char culoare[9][10];
- int st[9], n, contor(0);
- int valid(int);
- int solutie(int);
- void scriere(int);
- void back(int);
- /*int valid(int k)
- {
- for(int i = 1; i < k; i++)
- if(st[k] == st[i])
- return 0;
- return 1;
- }*/
- int valid(int k)
- {
- if(k == 2)
- return st[k] == 1;
- else
- {
- int i;
- for(i = 1; i < k; i++)
- if(st[k] == st[i])
- return 0;
- return 1;
- }
- }
- int solutie(int k)
- {
- return k == 3;
- }
- void back(int k)
- {
- int i;
- for(i = 1; i <= n; i++)
- {
- st[k] = i;
- if(valid(k)) {
- if(solutie(k))
- scriere(k);
- else back(k + 1);
- }
- }
- }
- void scriere(int k)
- {
- contor++;
- for(int i = 1; i <= k; i++)
- fout << culoare[st[i]] << ' ';
- fout << '\n';
- }
- int main()
- {
- fin >> n;
- fin.get();
- for(int i = 1; i <= n; i++)
- fin.getline(culoare[i], 10);
- back(1);
- if(contor == 0)
- fout << "Nicio solutie";
- else fout << contor;
- fout << '\n';
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement