目次
问题陈述
示例 1
Explanation
解释
示例例子2
方法
算法
示例:C程序
输出
结论
ホームページ バックエンド開発 C++ 他の文字の頻度の合計よりも頻度が高い文字と連結される文字列の数を計算します。

他の文字の頻度の合計よりも頻度が高い文字と連結される文字列の数を計算します。

Sep 03, 2023 pm 01:37 PM
キャラクター 計算する 頻度

他の文字の頻度の合計よりも頻度が高い文字と連結される文字列の数を計算します。

我们的主要目标是确定最多的字符串能够被连接起来,以确保只有一个字母的频率超过所有其他字符的总和,前提是有一个名为arr[]的包含M个字符串的数组。

在继续之前,让我们了解一些数组和字符串的基本概念。

数组就是一组相同数据类型的元素,存储在连续的内存区域中。

C编程语言中的数组具有固定的大小,这意味着一旦指定了大小,就无法更改;您无法缩小或扩展它。

让我们现在来研究一下什么是字符串。在C编程语言中,字符串是一组以空字符"\0"结尾的字符。C字符串中的字符被保存在字符数组中。与字符数组不同,C字符串之所以与字符数组相矛盾,是因为它以特殊的空字符结尾。

问题陈述

实现一个程序,用于确定要与频率大于其他字符之和的字符连接的字符串的数量。

示例 1

Let us take the input array 
arr[]: {“xyz", “yyyyx", “q”}
ログイン後にコピー
Output obtained is: 3
ログイン後にコピー

Explanation

的中文翻译为:

解释

这里元素 "x" 的频率为 2。

元素"y"的频率为5,元素"z"的频率为1。最后,

字符“q”的频率为1。

通过将数组中的三个字符串连接起来,我们得到 "xyzyyyyxq”。

这里字符 'y' 的频率为5,其余字符的频率总和为4。

示例例子2

Let us take the input array 
arr[]: {“mnoml", “lmll", “nln”, "mnlmn"}
ログイン後にコピー
Output obtained is : 2
ログイン後にコピー

Explanation

的中文翻译为:

解释

这里元素或字符“m”的频率为5。

元素 "n" 的频率为 5,元素 "l" 的频率为 6,最后字符 "o" 的频率为 1。

在这里,我们只能将两个字符串“lmllnl”连接起来。

字符l的频率为4。其他字符m和n的频率之和为2。为了依赖于拼接具有频率大于其他字符频率之和的字符的字符串,这是唯一可能的拼接。

方法

为了确定要与频率大于其他字符总和的字符连接的字符串的数量,我们采用以下方法。

解决这个问题的方法是通过迭代来获取要与频率大于其他字符频率之和的字符进行拼接的字符串的数量。

也就是说,我们通过迭代所有字符(即从"a"到"z")来确定所有字符串中每个字符的净频率。在这种情况下,净频率可以通过从中减去每个字符的其他频率来计算,因此如果总净频率大于0,则表示该元素的频率超过了所有其他频率的总和。

算法

下面给出了确定要与频率大于其他字符之和的字符连接的字符串计数的算法。

  • 第一步 - 开始

  • 第二步 − 定义函数以确定所有字符的频率,并减少字符串中其他频率的总和。

  • 第三步 - 迭代字符串数组 a

  • 第四步 - 定义一个整数变量来存储频率

  • 第五步 - 将频率存储在数组 v 中

  • 第六步 - 定义一个变量来存储最大计数

  • 第7步 - 遍历所有字母或元素

  • 第8步 - 返回最大值

  • 步骤 9 − 停止

示例:C程序

这是上述方法的C程序实现,用于计算要与频率大于其他字符总和的字符连接的字符串的数量。

#include <stdio.h>
#include <stdlib.h>
//input strings to be non-empty and not more //than 100 characters
#define MAX_STR_LEN 100

// Function to determine the frequencies of all the characters and reducing the sum of other frequencies in the strings
int* frequency(char** a, int len, char c){

   // We use array to store the frequency
   int* v = (int*)calloc(len, sizeof(int));
   if(v == NULL) {
      printf("Error: Memory allocation failed");
      exit(1);
   }
   
   // Iterating the array a of strings
   for (int i = 0; i < len; i++) {
      char* str = a[i];
      
      // defining an integer variable for storing //the frequencies
      int net_fre = 0;
      
      // Iterating through the string str
      for (int j = 0; str[j] != '\0'; j++) {
      
         // If str[j] is equal to the current character increment the net_fre by 1
         if (str[j] == c)
            net_fre++;
            
         // otherwise decrement net_fre by 1
         else
            net_fre--;
      }
      
      // After iterating the string store this frequency in the array v
      v[i] = net_fre;
   }
   
   //return the array v
   return v;
}

// Function to determine the count of the longest or the lengthiest string that could be obtained from the given array of strings
int longestConcatenatedString(char** a, int len){

   // An integer variable to store the maximum count Also it is set to zero
   int mxm = 0;
   
   // Iterating through all of the alphabets
   for (char c = 'a'; c <= 'z'; c++) {
   
      // Array to store the net_frequency of the character c after reducing the sum of every other frequencies in all of the strings
      int* v = frequency(a, len, c);
      
      // Array is stored in the order of descendants
      for (int i = 0; i < len - 1; i++) {
         for (int j = i + 1; j < len; j++) {
            if (v[i] < v[j]) {
               int temp = v[i];
               v[i] = v[j];
               v[j] = temp;
               char* temp_str = a[i];
               a[i] = a[j];
               a[j] = temp_str;
            }
         }
      }
      
      // Variable res is defined to store the //result
      int res = 0;
      int sum = 0;
      for (int i = 0; i < len; i++) {
         sum += v[i];
         
         // If sum is greater than 0 then increment res by 1
         if (sum > 0) {
            res++;
         }
      }
      
      // Keeping the track of the maximum one
      mxm = mxm > res ? mxm : res;
      free(v);
   }
   
   // Returning the maximum value obtained
   return mxm;
}
int main(){
   char* a[] = { "mnoml", "lmll", "nln", "mnlmn" };
   printf("Count of strings to be concatenated with a character having frequency greater than sum of others: ");
   int len = sizeof(a) / sizeof(a[0]);
   printf("%d", longestConcatenatedString(a, len));
   return 0;
}
ログイン後にコピー

输出

Count of strings to be concatenated with a character having frequency greater than sum of others: 2
ログイン後にコピー

结论

同样,我们可以计算要与频率大于其他字符之和的字符连接的字符串。

在这篇文章中,解决了获取程序来计算要与具有频率大于其他字符之和的字符串连接的挑战。

这里提供了C++编程代码以及算法,用于确定要与频率大于其他字符之和的字符连接的字符串的数量。

以上が他の文字の頻度の合計よりも頻度が高い文字と連結される文字列の数を計算します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CUDA の汎用行列乗算: 入門から習熟まで! CUDA の汎用行列乗算: 入門から習熟まで! Mar 25, 2024 pm 12:30 PM

General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 GEMM の実装に関する徹底的な調査と最適化は、ハイ パフォーマンス コンピューティングとソフトウェア システムとハードウェア システムの関係をより深く理解するのに役立ちます。コンピューター サイエンスでは、GEMM を効果的に最適化すると、計算速度が向上し、リソースが節約されます。これは、コンピューター システムの全体的なパフォーマンスを向上させるために非常に重要です。 GEMM の動作原理と最適化方法を深く理解することは、最新のコンピューティング ハードウェアの可能性をより有効に活用し、さまざまな複雑なコンピューティング タスクに対してより効率的なソリューションを提供するのに役立ちます。 GEMMのパフォーマンスを最適化することで

Word文書で足し算、引き算、掛け算、割り算を計算する方法 Word文書で足し算、引き算、掛け算、割り算を計算する方法 Mar 19, 2024 pm 08:13 PM

WORD は強力なワード プロセッサです。Word を使用してさまざまなテキストを編集できます。Excel の表では、足し算、引き算、乗算の計算方法をマスターしました。そのため、Word の表で数値の足し算を計算する必要がある場合は、乗数を引くにはどうすればよいですか? 計算には電卓しか使用できませんか?答えはもちろん「いいえ」です。WORD でも実行できます。今日は、Word文書の表で加算、減算、乗算、除算などの基本的な演算を数式を使って計算する方法を説明しますので、一緒に学びましょう。そこで、今日は、WORD 文書で加算、減算、乗算、除算を計算する方法を詳しく説明します。ステップ 1: WORD を開き、ツールバーの [挿入] の下にある [表] をクリックし、ドロップダウン メニューに表を挿入します。

Python の count() 関数を使用してリスト内の要素の数を数える方法 Python の count() 関数を使用してリスト内の要素の数を数える方法 Nov 18, 2023 pm 02:53 PM

Python の count() 関数を使用してリスト内の要素の数を計算する方法には、特定のコード サンプルが必要です。Python は強力で習得しやすいプログラミング言語として、さまざまなデータ構造を処理するための組み込み関数を多数提供しています。その 1 つは count() 関数で、リスト内の要素の数をカウントするために使用できます。この記事では、count()関数の使い方と具体的なコード例を詳しく説明します。 count() 関数は Python の組み込み関数であり、特定の値を計算するために使用されます。

パフォーマンス、メモリ周波数、またはタイミングに大きな影響を与えるのはどれですか? パフォーマンス、メモリ周波数、またはタイミングに大きな影響を与えるのはどれですか? Feb 19, 2024 am 08:58 AM

メモリはコンピュータの最も重要なコンポーネントの 1 つであり、コンピュータのパフォーマンスと安定性に大きな影響を与えます。メモリを選択するとき、人は 2 つの重要なパラメータ、つまりタイミングと周波数に注目する傾向があります。では、メモリのパフォーマンスに関しては、タイミングと頻度のどちらがより重要でしょうか?まず、タイミングと頻度の概念を理解しましょう。タイミングとは、メモリ チップがデータを受信して​​処理するのに必要な時間間隔を指します。通常はCL値(CASLatency)で表され、CL値が小さいほどメモリの処理速度が速くなります。周波数は範囲内です

行列式を使用して三角形の面積を計算するJavaプログラム 行列式を使用して三角形の面積を計算するJavaプログラム Aug 31, 2023 am 10:17 AM

はじめに 行列式を使用して三角形の面積を計算する Java プログラムは、3 つの頂点の座標を指定して三角形の面積を計算できる簡潔で効率的なプログラムです。このプログラムは、Java で基本的な算術および代数計算を使用する方法と、Scanner クラスを使用してユーザー入力を読み取る方法を示しているため、ジオメトリを学習または操作する人にとって役立ちます。プログラムはユーザーに三角形の 3 点の座標を入力するように要求し、その座標が読み取られて、座標行列の行列式を計算するために使用されます。行列式の絶対値を使用して面積が常に正であることを確認し、式を使用して三角形の面積を計算し、ユーザーに表示します。このプログラムは簡単に変更して、さまざまな形式での入力を受け入れたり、追加の計算を実行したりできるため、幾何学的計算のための多用途ツールになります。決定要因のランク

Java で部分文字列の出現数を再帰的にカウントする Java で部分文字列の出現数を再帰的にカウントする Sep 17, 2023 pm 07:49 PM

2 つの文字列 str_1 と str_2 を指定します。目的は、再帰的プロシージャを使用して、文字列 str1 内の部分文字列 str2 の出現数をカウントすることです。再帰関数は、その定義内で自分自身を呼び出す関数です。 str1 が「Iknowthatyouknowthatiknow」、str2 が「know」の場合、出現回数は -3 になります。例を通して理解しましょう。たとえば、入力 str1="TPisTPareTPamTP"、str2="TP"; 出力 Countofoccurrencesofasubstringrecursi

C# で Math.Pow 関数を使用して指定した数値のべき乗を計算する方法 C# で Math.Pow 関数を使用して指定した数値のべき乗を計算する方法 Nov 18, 2023 am 11:32 AM

C# には、多くの数学関数が含まれる Math クラス ライブラリがあります。これらには、累乗を計算する関数 Math.Pow が含まれており、指定された数値の累乗を計算するのに役立ちます。 Math.Pow 関数の使用法は非常に簡単で、基数と指数を指定するだけです。構文は次のとおりです: Math.Pow(base,exponent); ここで、base は基数を表し、exponent は指数を表します。この関数は double 型の結果、つまりべき乗の計算結果を返します。しましょう

matplotlibで中国語の文字を表示する正しい方法 matplotlibで中国語の文字を表示する正しい方法 Jan 13, 2024 am 11:03 AM

matplotlib で中国語の文字を正しく表示することは、多くの中国人ユーザーがよく遭遇する問題です。デフォルトでは、matplotlib は英語フォントを使用するため、中国語の文字を正しく表示できません。この問題を解決するには、正しい中国語フォントを設定し、それを matplotlib に適用する必要があります。以下は、matplotlib で中国語の文字を正しく表示するのに役立ついくつかの具体的なコード例です。まず、必要なライブラリをインポートする必要があります: importmatplot

See all articles