نمایش نتایج 1 تا 2 از 2

نام تاپیک: چاپ جایگشتهای n شی

  1. #1

    چاپ جایگشتهای n شی

    سلام

    چجور میتونم جایگشتهای n شی رو در خروجی print کنم:
    مثال : abc-acb و ....

    با تشکر

  2. #2

    نقل قول: چاپ جایگشتهای n شی

    خودم از روش بازگشتی زیر استفاده کردم، ولی راستش خیلی پیچیده شد(کار به جاهای باریک کشید مثل استفاده از پشته و ...).
    خلاصه اینکه بعضی جاها خودم نفهمیدم چیکار کردم ...

    اگه روش آسونتری دارین لطفا پیشنهاد بدین.



    #include "stdio.h"
    #include "conio.h"
    #include "string.h"
    #define N 26

    void Jaygasht(int n,int m);
    void Push(int data);
    int Pop(void);
    int used[N];
    char alphabet[] = {'a','b','c','d','e','f','g','h','i','j','k','l',' m','n','o','p','q','r','s','t','u','v','w','x','y' ,'z'};
    char forPrint[N];
    int forPrintPointer;
    int Stack[50];
    int StackPointer = 0;
    int globalNumber=0;

    void main(void)
    {

    int num;
    printf("Enter number between 1 to 26:");
    scanf("%d",&num);

    forPrintPointer = 0;
    for(int i=0;i<N;i++)
    used[i] = 0;

    Jaygasht(num,num);

    getch();
    }

    void Jaygasht(int n,int m)
    {
    for(int i=0;i<n;i++)
    {
    if(used[i] == 0)
    {
    if (m == 1)
    {
    forPrint[forPrintPointer++] = alphabet[i];
    forPrint[forPrintPointer++] = '\0';
    globalNumber++;
    printf("%4d - %s\n",globalNumber,forPrint);
    forPrintPointer=0;
    break;
    }
    used[i] = 1;
    forPrint[forPrintPointer] = alphabet[i];
    Push(forPrintPointer++);
    Jaygasht(n,m-1);
    forPrintPointer=Pop();
    used[i] = 0;
    }
    }
    }

    void Push(int data)
    {
    Stack[StackPointer++] = data;
    }
    int Pop(void)
    {
    return Stack[--StackPointer];
    }


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •