グレイコードでコード化された数字を示すプログラムを書く必要があります。私はすでにこのページ(https://www.geeksforgeeks.org/given-a-number-n-generate-bit-patterns-from-0-to-2n-1-so-that-successive-patterns-differ-by-one-bit/)にC++で書かれたアルゴリズムを発見しました。いくつかの数字をグレイコードで選択する
しかし、2つの「1」の連続した数字を削除し、その末尾に「1」を付ける新しい方法を作成したいと考えています。
例:N = 3のために私たちは、この番号を取得:101、011、110、111、リストにremiding他の番号を示しています。
000
001
011
010
110
111
101
100
今、私はこの数字を削除したいです。
私の考えは、ベクトルのベクトルを作成することです。たとえば、n = 3の場合、{{000}、{001}、{011}、{010}、{110}、{111}、{101}、{100}}のようなものです。例えば
int m = pow(2,n);
int vector[m][n];
:ベクトル[0] [1] = {0}とベクトル[1] [2] = {1}私は場合は、それは、このようになりますサイズについて
サイズで修正してください。今
連続2「1」を持っている番号を削除し、私はこのコードを使用することができます彼らの四肢に「1」を持っている:
while (i < m){
for (j=0; j<n-1; j++){
if (vector[i][j]==vector[i][j+1]==1 && vector[i][0]==vector[i][n-1]==1)
i=i+1; //Don't show this number
else { cout <<vector[i][j] << endl; i=i+1; }
}
}
今の問題は、私は保存する方法がわからないということですグレイコードの結果は私のベクタにC++で書かれています。あるいは、ベクタを使わずにこのコードから2つの数字を比較する方法があります。
これはなぜJavaおよびC++としてタグ付けされていますか?どの言語? C++では、 'std :: adjacent_find'の使い方がこれを簡単にします。 – PaulMcKenzie
Javaコードを削除します。そして、C++でコードwriteenでstd :: adjacent_findを使うにはどうすればいいですか? –
ベクトルのベクトルがあり、指定した基準に一致するベクトルを削除したいのですか? – PaulMcKenzie