Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- //permutari 1234
- // 1342
- // in vect solutie scriem permutarea o afisam, urm suprascrie
- int sol[20], n = 6;//globale
- void afisare() {
- for (int i = 1; i <= n; i++) {
- printf("%3d", sol[i]);
- }
- printf("\n");
- }
- //functia valid pt permutari clasice:
- int valid1(int k){
- for (int i=1;i<k;i++) // verifică dacă elementul din
- if (sol[i]==sol[k]) return 0; // vârf este diferit de elemente precedente din stivă
- return 1;
- }
- //functia valid pentru permutari crescatoare, apoi descrescatoare
- int valid21(int k) {// sau bool
- for (int i = 1; i < k; i++) {
- if (sol[k] == sol[i])
- return 0;
- }
- int pozitie = n / 2;
- if (k <= pozitie && k>1) {
- if (sol[k] < sol[k - 1])
- return 0;
- }
- if (k > pozitie + 1) {
- if (sol[k] > sol[k - 1])
- return 0;
- }
- return 1;
- }
- //functia valid pentru permutari descrescatoare, apoi crescatoare
- int valid22(int k) {// sau bool
- for (int i = 1; i < k; i++) {
- if (sol[k] == sol[i])
- return 0;
- }
- int pozitie = n / 2;
- if (k <= pozitie && k>1) {
- if (sol[k] > sol[k - 1])
- return 0;
- }
- if (k > pozitie + 1) {
- if (sol[k] < sol[k - 1])
- return 0;
- }
- return 1;
- }
- //pozitiile pare raman neschimbate
- int valid3(int k) {// sau bool
- for (int i = 1; i < k; i++) {
- if (sol[k] == sol[i])
- return 0;
- }
- if (k % 2 == 0 && sol[k] != k)
- return 0;
- return 1;
- }
- //combinatii de 0,1 a.i sa nu fie 2 cifre de 1 alaturate
- int valid4(int k) { // sau bool
- if(k>1 && sol[k]==sol[k-1] && sol[k]==0)
- return 0;
- return 1;
- }
- void bkt(int k) {
- for (int i = 1;i <= n;i++) {
- sol[k] = i;
- if (valid3(k)) {
- if (k == n) {
- afisare();
- }
- else bkt(k + 1);
- }
- }
- }
- //cresc desc adaugam conditii, conditii de unicitate si cond ca pana la jum sa fie cresc/descresc si invers
- int main() {
- bkt(1);
- printf("-------");
- _getch();
- return 0;
- }
- //https://tehprog.weebly.com/backtracking.html
- //https://informaticacnet.wordpress.com/category/clasa-a-xi-a/metode-backtraking/
- //http://www.aut.upt.ro/~ovidiub/files/TP/TP5.pdf
- //mutari rege
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement