Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- void swap(char* num, int i, int j){
- char temp = num[i];
- num[i] = num[j];
- num[j] = temp;
- }
- int find_max_index(char *num, size_t num_size){
- for (int i = num_size - 2; i >= 0; i--) {
- if (num[i] < num[i + 1]) {
- return i;
- }
- }
- return -1;
- }
- int find_index_bigger_element(char *num, size_t num_size, int element){
- for (int i = num_size - 1; i >= 0; i--) {
- if (num[i] > element) {
- return i;
- }
- }
- return -1;
- }
- void reverse_sequence_part(int begin, char* num, size_t num_size){
- int end = num_size - 1;
- while (begin < end)
- {
- swap(num, begin, end);
- begin++;
- end--;
- }
- }
- void narajana(int permutation_counter, char *num){
- size_t num_size = strlen(num);
- int index = find_max_index(num, num_size);
- for (; index != -1;) {
- int element = num[index];
- int swapIndex = find_index_bigger_element(num, num_size, element);
- swap(num, index, swapIndex);
- reverse_sequence_part(index, num, num_size);
- printf("%s\n", num);
- index = find_max_index(num, num_size);
- }
- }
- int main(){
- int permutation_counter = 2;
- char *num = "214";
- narajana(permutation_counter, num);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement