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

母音と子音の相対的な位置を変えずに単語を配置しますか?


n個の要素(n <10)を持つ文字列があるとします。母音と子音の相対的な位置を変えずに弦を配置できる方法の数を見つける必要があります。

アプローチは簡単です。与えられた文字列の母音と子音の数を数える必要があります。次に、母音のみを配置できる方法の数を見つけ、次に子音のみを配置する方法の数を見つけます。その後、これら2つの結果を乗算して次のようにします。トータルウェイ。

アルゴリズム

ArrangeWayCount(str)

Begin
   define an array ‘freq’ to store frequency.
   count and place frequency of each characters in freq array. such that freq[‘0’] will hold
   frequency of letter ‘a’, freq[1] will hold frequency of ‘b’ and so on.
   v := number of vowels, and c := number of consonants in str
   vArrange := factorial of v
   for each vowel v in [a, e, i, o, u], do
      vArrange := vArrange / factorial of the frequency of v
   done
   cArrange := factorial of c
   for each consonant con, do
      cArrange := cArrange / factorial of the frequency of con
   done
   return vArrange * cArrange
End

#include <iostream>
using namespace std;
long long factorial(int n){
   if(n == 0 || n == 1)
      return 1;
   return n*factorial(n-1);
}
long long arrangeWayCount(string str){
   long long freq[27] = {0}; //fill frequency array to 0
   int v = 0, c = 0;
   for (int i = 0; i < str.length(); i++) {
      freq[str[i] - 'a']++;
      if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') {
         v++;
      }else
         c++;
   }
   long long arrangeVowel;
   arrangeVowel = factorial(v);
   arrangeVowel /= factorial(freq[0]); // vowel a
   arrangeVowel /= factorial(freq[4]); // vowel e
   arrangeVowel /= factorial(freq[8]); // vowel i
   arrangeVowel /= factorial(freq[14]); // vowel o
   arrangeVowel /= factorial(freq[20]); // vowel u
   long long arrangeConsonant;
   arrangeConsonant = factorial(c);
   for (int i = 0; i < 26; i++) {
      if (i != 0 && i != 4 && i != 8 && i != 14 && i != 20)
      arrangeConsonant /= factorial(freq[i]); //frequency of all characters except vowels
   }
   long long total = arrangeVowel * arrangeConsonant;
   return total;
}
main() {
   string str = "computer";
   long long ans = arrangeWayCount(str);
   cout << "Possible ways to arrange: " << ans << endl;
}

出力

Possible ways to arrange: 720

  1. Windows 10 でユーザーによる日付と時刻の変更を許可または禁止する

    ユーザーによるWindows 10 の日付と時刻: ユーザーは必要に応じて日付と時刻をカスタマイズできますが、ユーザーが日付と時刻を変更できないように、管理者がこのアクセスを無効にする必要がある場合があります。たとえば、何千台ものコンピューターがある会社で働いている場合、セキュリティ上の問題を回避するために、管理者がユーザーが日付と時刻を変更できないようにすることは理にかなっています. デフォルトで、すべての管理者が Windows 10 の日付と時刻を変更できるようになりましたが、標準ユーザーにはこれらの権限がありません。通常、上記の設定は問題なく機能しますが、場合によっては、日付と時刻

  2. Google Home – 家事と買い物のやり方を変える

    「Google」という言葉を聞いて思い浮かぶことは何ですか ?ありとあらゆるもののためのソリューション。すべての質問に対する答え。すべての検索のガイダンス。いつもあなたのそばにいるお手伝い。そしてリストは続きます。 Google は、既存の機能 「Google Now」 をアップグレードおよび拡張することで、個人的なタッチを加えました。 . Google は現在、Google Home の形で新しい外観を開発しています。これは、家の周りで役立つものであり、ハンズフリーのオンライン ショッピングを行うのに役立つものであり、あなたの質問に答えるものです。電話や PC を使用せずに質問できます。