Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

パンケーキの並べ替えのためのCプログラム?


このCプログラムは、整数の配列にパンケーキソートを実装します。

パンケーキの並べ替えは、並べ替えの問題のバリエーションであり、許可される操作は、シーケンスのプレフィックスの要素を逆にすることだけです。

パンケーキの並べ替え は、無秩序なパンケーキのスタックをサイズ順に並べ替える数学の問題の俗称です。ヘラをスタックの任意の場所に挿入し、その上のすべてのパンケーキを裏返すために使用できます。パンケーキの数は、特定の数のパンケーキに必要なフリップの最小数です

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);
}

  1. アームストロング数のためのCプログラム

    アームストロングかどうかに関係なく、ユーザーが入力した数字nを確認する必要があるタスクが与えられます。 アームストロング数は、すべての桁の合計が桁数で累乗される場合、または桁の順序nと言うことができる場合、桁と同じです。 以下は、アームストロング数を見つける方法の簡単な表現です- 数式- wxyz…. = pow(w, n) +pow(x, n) + pow(y, n) + pow(z, n) + ….. アルゴリズム START Step 1-> Declare a function to find the value after power o

  2. 長方形の面積と周囲長のためのCプログラム

    長方形の長さと幅を考えると、その面積と周囲長を見つける必要があります。 長方形は、4つの辺とそれぞれ90度の4つの角度を含む2D図形です。長方形のすべての辺が等しいわけではなく、長方形の反対側だけが等しいだけです。長方形の対角線も同じ長さです。 以下は長方形の図式表現です。 ここで、Aは長方形の幅を表し、Bは長方形の長さを表します。 エリアを見つけるには 長方形の式は次のとおりです。長さx幅 また、長方形の周囲長は− 2 x(長さ+幅) 。 例 Input: 20 30 Output: area of rectangle is : 600    peri