配列要素は 1 回の移動で k 位置に移動しますか?
n 個の要素を含む配列があるとします。1 から n までの順序がスクランブルされます。別の整数 K を与えます。 N人がバドミントンをするために並んでいます。最初の 2 人のプレーヤーがボールに行き、その後、負けたプレーヤーがラインの最後に行きます。勝者は次に並んでいる人と対戦します。誰かが K 回連続で勝つまでプレイを続けます。そのプレイヤーが勝者となります。
キューが [2, 1, 3, 4, 5] で K = 2 の場合、出力は 5 になります。ここで説明を見てください:
(2, 1) が一致し、2 が勝利したため、キューに 1 が追加され、キューは [3, 4, 5, 1] (2, 3) になります。一致、3 勝したためキューに 2 が追加され、キューは [4, 5, 1, 2] (3, 4) 一致、4 勝したためキューに 3 が追加され、キューは [5] になります、1、2、3] (4、5) 一致、5 勝なので 4 がキューに追加され、キューは [1、2、3、4] (5、1) 一致、5 勝なので 3 になります。がキューに追加され、キューは [2, 3, 4, 1]
#(2, 1) と一致し、2 が勝利したため、キューに 1 が追加され、キューは [3, 4, 5 , 1](2, 3) が一致し、3 が勝利したため、キューに 2 が追加され、キューは [4, 5, 1, 2] になります。 (3, 4 ) 一致、4 勝なので 3 がキューに追加され、キューは [5, 1, 2, 3](4, 5) 一致、5 勝なので 4 になります。がキューに追加されると、キューは [1, 2, 3, 4](5, 1) と一致し、5 が勝ちとなるため、キューに 3 が追加され、キューは [2, 3] になります。 , 4, 1 ] 5 が 2 連勝したため、出力は 5 になります。 アルゴリズムwinner(arr, n, k)Begin
if k >= n-1, then return n
best_player := 0
win_count := 0
for each element e in arr, do
if e > best_player, then
best_player := e
if e is 0th element, then
win_count := 1
end if
else
increase win_count by 1
end if
if win_count >= k, then
return best player
done
return best player
End
ログイン後にコピー
ExampleBegin if k >= n-1, then return n best_player := 0 win_count := 0 for each element e in arr, do if e > best_player, then best_player := e if e is 0th element, then win_count := 1 end if else increase win_count by 1 end if if win_count >= k, then return best player done return best player End
の中国語翻訳は次のとおりです:
Example#include <iostream>
using namespace std;
int winner(int arr[], int n, int k) {
if (k >= n - 1) //if K exceeds the array size, then return n
return n;
int best_player = 0, win_count = 0; //initially best player and win count is not set
for (int i = 0; i < n; i++) { //for each member of the array
if (arr[i] > best_player) { //when arr[i] is better than the best one, update best
best_player = arr[i];
if (i) //if i is not the 0th element, set win_count as 1
win_count = 1;
}else //otherwise increase win count
win_count += 1;
if (win_count >= k) //if the win count is k or more than k, then we have got result
return best_player;
}
return best_player; //otherwise max element will be winner.
}
main() {
int arr[] = { 3, 1, 2 };
int n = sizeof(arr) / sizeof(arr[0]);
int k = 2;
cout << winner(arr, n, k);
}
ログイン後にコピー出力rreeee
#include <iostream> using namespace std; int winner(int arr[], int n, int k) { if (k >= n - 1) //if K exceeds the array size, then return n return n; int best_player = 0, win_count = 0; //initially best player and win count is not set for (int i = 0; i < n; i++) { //for each member of the array if (arr[i] > best_player) { //when arr[i] is better than the best one, update best best_player = arr[i]; if (i) //if i is not the 0th element, set win_count as 1 win_count = 1; }else //otherwise increase win count win_count += 1; if (win_count >= k) //if the win count is k or more than k, then we have got result return best_player; } return best_player; //otherwise max element will be winner. } main() { int arr[] = { 3, 1, 2 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; cout << winner(arr, n, k); }
以上が配列要素は 1 回の移動で k 位置に移動しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









C言語データ構造:ツリーとグラフのデータ表現は、ノードからなる階層データ構造です。各ノードには、データ要素と子ノードへのポインターが含まれています。バイナリツリーは特別なタイプの木です。各ノードには、最大2つの子ノードがあります。データは、structreenode {intdata; structreenode*left; structreenode*右;}を表します。操作は、ツリートラバーサルツリー(前向き、順序、および後期)を作成します。検索ツリー挿入ノード削除ノードグラフは、要素が頂点であるデータ構造のコレクションであり、近隣を表す右または未照明のデータを持つエッジを介して接続できます。

ファイルの操作の問題に関する真実:ファイルの開きが失敗しました:不十分な権限、間違ったパス、およびファイルが占有されます。データの書き込みが失敗しました:バッファーがいっぱいで、ファイルは書き込みできず、ディスクスペースが不十分です。その他のFAQ:遅いファイルトラバーサル、誤ったテキストファイルエンコード、およびバイナリファイルの読み取りエラー。

記事では、移動セマンティクス、完璧な転送、リソース管理のためのcでのr値参照の効果的な使用について説明し、ベストプラクティスとパフォーマンスの改善を強調しています。(159文字)

C 20の範囲は、表現力、複合性、効率を伴うデータ操作を強化します。複雑な変換を簡素化し、既存のコードベースに統合して、パフォーマンスと保守性を向上させます。

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

この記事では、不必要なコピーを回避することにより、パフォーマンスを向上させるために、CのMove Semanticsを使用することについて説明します。 STD :: MOVEを使用して、移動コンストラクターと割り当てオペレーターの実装をカバーし、効果的なAPPLの重要なシナリオと落とし穴を識別します

C35の計算は、本質的に組み合わせ数学であり、5つの要素のうち3つから選択された組み合わせの数を表します。計算式はC53 = 5です! /(3! * 2!)。これは、ループで直接計算して効率を向上させ、オーバーフローを避けることができます。さらに、組み合わせの性質を理解し、効率的な計算方法をマスターすることは、確率統計、暗号化、アルゴリズム設計などの分野で多くの問題を解決するために重要です。

この記事では、Cでの動的発送、そのパフォーマンスコスト、および最適化戦略について説明します。動的ディスパッチがパフォーマンスに影響を与え、静的ディスパッチと比較するシナリオを強調し、パフォーマンスとパフォーマンスのトレードオフを強調します
