swap() - փոփոխականները տեղերով փոխել
Շատ հաճախ կարիք է լինում փոփոխականները տեղերով փոխել, օրինակ՝
a
ամբոջղ թվին վերագրել b
ամբողջ թվի արժեքը, իսկ b
-ինը՝ a
-ին։ Դա կարելի է անել մի քանի եղանակով՝#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a = 100;
int b = 77;
cout << a << " " << b << endl;
int tmp = a;
a = b;
b = tmp;
cout << a << " " << b << endl;
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a = 100;
int b = 77;
cout << a << " " << b << endl;
swap(a, b);
cout << a << " " << b << endl;
return 0;
}
Մի դեպքում օգտագործում ենք հավելյալ
tmp
փոփոխական և դրա միջոցով տեղերով փոխում ենք a
-ի և b
-ի արժեքները, իսկ մյուս դեպքում օգտագործում ենք <algorithm>
գրադարանի մեջ եղած swap
հրամանը։ Երկու ծրագրերն էլ կտպեն՝100 77
77 100
Վարժություն՝
Մուտքում ունենալով
n
հատ թիվ և k
հատ գործողություն, անհրաժեշտ է կատարել այդ գործողությունները և տպել ստացված թվերի հաջորդականությունը։ Ամեն գործողություն իրենից ներկայացնում է երկու ինդեքսի տեղերով փոխել։ Այսինքն ունենալով i1
և i2
ինդեքսներ անհրաժեշտ է թվերի հաջորդականության մեջ փոխել i1
-րդ էլեմենտի և i2
-րդ էլեմենտի տեղերը։Մուտքի առաջին տողում տրված են
n
և k
թվերն իրարից բացատով առանձնացված։Երկրորդ տողում տրված է
n
հատ ամբողջ թիվ։ Երրորդ տողում տրված է k
հատ թվի զույգ 1-ից n
միջակայքում, որոնք պետք է տեղերով փոխել։Ելքի միակ տողում տպեք ստացված թվերի հաջորդականությունը։
Մուտք | Ելք |
5 3
1 2 3 4 5
1 3
2 4
3 5 | 3 4 5 2 1 |
Constraints
Time limit: 0.2 seconds
Memory limit: 512 MB
Output limit: 1 MB