Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** p 5-6 permutari crescatoare / descrscatoare */
- #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("%5d", sol[i]);
- }
- printf("\n");
- }
- ///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;///mijloc
- 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;
- }
- void bkt(int k) {
- for (int i = 1;i <= n;i++) {
- sol[k] = i;
- if (valid22(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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement