-3

一時変数を使用せずに 4 つの変数を交換したい。それは可能ですか?

a = b & b = c & c = d & d = a新しい5番目の変数にtempを使用せずに、のようにしたい。

**更新: - わかりました.. わかりました! 別の新しい変数なしでは実行できません!

単一の一時変数でどのように行うことができますか?**

4

2 に答える 2

6

連続するペアでXOR スワップを使用して、一時変数なしでn 個の変数を交換できます。

a b c d   // Variables
-------
A B C D   // Initial values
B A C D   // swap(a,b) 
B C A D   // swap(b,c)
B C D A   // swap(c,d)

とはいえ、一時変数を使用すると理解しやすく、必ずしも効率が低下するわけではありません。

編集

更新された質問では、変数を単一の一時変数と交換する方法を尋ねています。かんたんだよ。

int temp = a;
a = b;
b = c;
c = d;
d = temp;
于 2013-10-28T17:28:19.603 に答える
0

5 番目の変数を使用せずに、4 つの変数 x、y、z、w があり、それらを x=y、y=z、z=w、w=x にしたい場合、このように作業できます。

        x=x+y;
        y=x-y;
        x=x-y;

        y=y+z;
        z=y-z;
        y=y-z;

        z=z+w;
        w=z-w;
        z=z-w;
于 2015-05-15T18:08:25.203 に答える