यह सी प्रोग्राम पूर्णांकों की सरणी पर पैनकेक सॉर्ट लागू करता है।
पैनकेक छँटाई छँटाई समस्या का एक रूपांतर है जिसमें अनुक्रम के कुछ उपसर्ग के तत्वों को उलटने के लिए एकमात्र अनुमत संचालन है।
पैनकेक छँटाई आकार के क्रम में पैनकेक के अव्यवस्थित ढेर को छांटने की गणितीय समस्या के लिए बोलचाल का शब्द है, जब स्टैक में किसी भी बिंदु पर एक स्पैटुला डाला जा सकता है और इसके ऊपर सभी पेनकेक्स को फ्लिप करने के लिए उपयोग किया जाता है। पैनकेक संख्या पैनकेक की दी गई संख्या के लिए आवश्यक फ़्लिप की न्यूनतम संख्या है
Input:5,3,2,1,4 Output:1 2 3 4 5
स्पष्टीकरण
यह छँटाई समस्या का एक रूपांतर है जिसमें अनुक्रम के कुछ उपसर्ग के तत्वों को उलटने के लिए एकमात्र अनुमत संचालन है। एक पारंपरिक छँटाई एल्गोरिथ्म के विपरीत, जो संभव कम से कम तुलना के साथ क्रमबद्ध करने का प्रयास करता है, लक्ष्य अनुक्रम को यथासंभव कुछ उलटफेर में क्रमबद्ध करना है। समस्या का एक प्रकार जले हुए पैनकेक से संबंधित है, जहां प्रत्येक पैनकेक का एक जला हुआ पक्ष होता है और इसके अलावा, सभी पैनकेक को जले हुए हिस्से के साथ समाप्त होना चाहिए।
उदाहरण
#include <iostream> using namespace std; void do_flip(int *, int, int); int pancake_sort(int *list, unsigned int length) { if (length < 2) return 0; int i, a, max_num_pos, moves; moves = 0; for (i = length;i > 1;i--) { max_num_pos = 0; for (a = 0;a < i;a++){ if (list[a] > list[max_num_pos]) max_num_pos = a; } if (max_num_pos == i - 1) continue; if (max_num_pos){ moves++; do_flip(list, length, max_num_pos + 1); } do_flip(list, length, i); } return moves; } void do_flip(int *list, int length, int num) { int swap; int i = 0; for (i=0;i < --num;i++) { swap = list[i]; list[i] = list[num]; list[num] = swap; } } int main(int argc, char **argv) { int arr[]={5,3,2,1,4}; int n=5; int moves=pancake_sort(arr, n); for (int i = 0;i < n;i++) { printf("%d ", arr[i]); } printf(" - with a total of %d moves\n", moves); }