[ad_1]
1000 行で構成される入力があります。すべての行には、30 個の数字で構成される配列があります。最初の 15 個の数字は 1 ~ 10 の間で、最後の 15 個の数字はそれらの正方形です。コードは左から数字を読み取ります。右側の同じ番号が置き換えられます。その後、読み取りと書き込みが続行され、左側のインデックスが右側のインデックスと等しくなると、コードは停止します。
私が試したこと:
最初は前半用、2 つ目は後半用の 2 つのループを使用しようとしましたが、続行できませんでした。
解決策 1
引用:コードは左から数字を読み取り、右に同じ数字がある場合、これらの数字は置き換えられます。
何に置き換えられますか?
セットの番号 (例: 左側のもの) を別のセット (例: 右側のもの) で検索する必要があります。 直接的で力ずくのアプローチでは、次の 2 つのループを使用します。
疑似コード
for i = 1 to 15 for j = 16 to 30 if n[i] == n[j] replace
解決策 2
引用:最初の 15 番目と最後の 15 番目の両方に同じ数字がある場合、これらの数字は置き換えられます。私はちょうどそれについて考えましたが、私には奇妙に感じました。この質問には間違いがあるに違いありません。
そうではありません: 1 と 10 の間の正方形であるため、1、4、および 9 の 3 つの数字が両側に表示されます。
したがって、これを行う最も簡単で効率的な方法は、右側でこれら 3 つの値を探し、1 つでも見つかった場合は、左側で一致する 1、2、または 3 を探すことです。
見つけたら、それらを削除します。
一致のインデックスが同じ場合、処理を停止します。
[ad_2]
コメント