0% found this document useful (0 votes)
19 views27 pages

Bai Giang Ptit

1. The document contains code snippets for common algorithms in C++ including filtering duplicate elements from an array, generating binary strings, permutations, combinations, and more. 2. It provides the code to generate all possible combinations of naming k objects from a pool of n unique names by using combinations and vectors. 3. The last code snippet is a variation of the naming problem that generates combinations of k names from n unique names and outputs them before moving on to the next combination.

Uploaded by

giap200496
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views27 pages

Bai Giang Ptit

1. The document contains code snippets for common algorithms in C++ including filtering duplicate elements from an array, generating binary strings, permutations, combinations, and more. 2. It provides the code to generate all possible combinations of naming k objects from a pool of n unique names by using combinations and vectors. 3. The last code snippet is a variation of the naming problem that generates combinations of k names from n unique names and outputs them before moving on to the next combination.

Uploaded by

giap200496
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 27

1.

XÓA DỮ LIỆU TRONG DSLK ĐƠN


#include<iostream>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
int k; cin >> k;
for (int i=0;i<n;i++){
if (arr[i]==k) continue;
cout << arr[i] << " ";
}
}
2. LỌC DỮ LIỆU TRÙNG TRONG DSLK ĐƠN
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n; cin >> n;
map <int,int> visited;
int arr[n];
for (int i=0;i<n;i++){
cin >> arr[i]; visited[arr[i]]=0;
}
for (int i=0;i<n;i++){
if (visited[arr[i]]==0){
cout << arr[i] << " ";
visited[arr[i]]=1;
}
}
}
3. XÂU NHỊ PHÂN KẾ TIẾP
#include<iostream>
using namespace std;
main()
{
int n; cin >> n;
while (n--){
string s; cin >> s;
int i=s.length()-1;
while (s[i]=='1'){
s[i]='0';i--;
}
if (i>=0) s[i]='1';
cout << s << endl;
}
}
4. TẬP CON KẾ TIẾP
#include<iostream>
using namespace std;
main()
{
int t; cin >> t;
while (t--){
int n,k; cin >> n >> k;
int arr[k]; for (int i=1;i<=k;i++) cin >> arr[i];
int idx=k;
while (arr[idx]==n-k+idx) idx--;
if (idx==0){
for (int i=1;i<=k;i++) arr[i]=i;
}
else{
arr[idx]+=1;
for (int i=idx+1;i<=k;i++) arr[i]=arr[i-1]+1;
}
for (int i=1;i<=k;i++) cout << arr[i] << " ";
cout << endl;
}
}
5. HOÁN VỊ KẾ TIẾP
#include<iostream>
using namespace std;
int n,arr[1005];
void next(){
int i=n-1;
while (arr[i]>arr[i+1]) i--;
if (i==0){
for (int j=1;j<=n;j++) cout << j << " ";
}
else{
int k=n;
while (arr[i]>arr[k]) k--;
int doi=arr[i];arr[i]=arr[k];arr[k]=doi;
int l=i+1,r=n;
while (l<r){
doi=arr[l];arr[l]=arr[r];arr[r]=doi;
l++;r--;
}
for (int i=1;i<=n;i++) cout << arr[i] << " ";
}
}
main()
{
int t; cin >> t;
while (t--){
cin >> n;
for (int i=1;i<=n;i++) cin >> arr[i];
next();
cout << endl;
}
}
6. SINH TỔ HỢP
#include<iostream>
using namespace std;
int n,k,arr[100];
bool ok=1;
void Init(){
cin >> n >> k;
for (int i=1;i<=k;i++) arr[i]=i;
}
void Out(){
for (int i=1;i<=k;i++) cout << arr[i];
cout << " ";
}
void Combination(){
int i=k;
while (arr[i]==n-k+i) i--;
if (i==0) ok=0;
else{
arr[i]++;
for (int j=i+1;j<=k;j++) arr[j]=arr[j-1]+1;
}
}
main(){
int t; cin >> t;
while (t--){
Init();
while (ok){
Out();
Combination();
}
cout << endl;
ok=1;
}
}
7. SINH HOÁN VỊ
#include<iostream>
using namespace std;
int n,arr[100];
bool ok=1;
void Init(){
cin >> n;
for (int i=1;i<=n;i++) arr[i]=i;
}
void Out(){
for (int i=1;i<=n;i++) cout << arr[i];
cout << " ";
}
void Next_PerMutation(){
int i=n-1;
while (arr[i]>arr[i+1]) i--;
if (i>0){
int j=n;
while (arr[i]>arr[j]) j--;
int doi=arr[i]; arr[i]=arr[j]; arr[j]=doi;
int l=i+1, r=n;
while (l<r){
doi=arr[l]; arr[l]=arr[r]; arr[r]=doi;
l++;r--;
}
}
else ok=0;
}
main(){
int t; cin >> t;
while (t--){
Init();
while (ok){
Out();
Next_PerMutation();
}
cout << endl;
ok=1;
}
}
8. HOÁN VỊ NGƯỢC
#include<iostream>
using namespace std;
int n,arr[100];
bool ok=1;
void Init(){
cin >> n;
for (int i=1;i<=n;i++) arr[n-i+1]=i;
}
void Out(){
for (int i=1;i<=n;i++) cout << arr[i];
cout << " ";
}
void Next_PerMutation(){
int i=n-1;
while (arr[i]<arr[i+1]) i--;
if (i>0){
int j=n;
while (arr[i]<arr[j]) j--;
int doi=arr[i];arr[i]=arr[j];arr[j]=doi;
int l=i+1,r=n;
while (l<r){
doi=arr[l];arr[l]=arr[r];arr[r]=doi;
l++;r--;
}
}
else ok=0;
}
main(){
int t; cin >> t;
while (t--){
Init();
while (ok){
Out();
Next_PerMutation();
}
cout << endl;
ok=1;
}
}
9. XÂU AB CÓ ĐỘ DÀI N
#include<iostream>
#include<cmath>
using namespace std;
main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int cnt=0;
for (int i=0;i<pow(2,n);i++){
int cnt=0,dem=i;
int arr[n];
while (cnt<n){
arr[n-1-cnt]=dem%2;
cnt++; dem/=2;
}
for (int i=0;i<n;i++) cout << (char)(arr[i]+65);
cout << " ";
}
cout << endl;
}
}
10. XÂU NHỊ PHÂN CÓ K BIT 1
#include<iostream>
using namespace std;
int n,k,arr[100];
bool ok;
void kt(){
for (int i=1;i<=n;i++) arr[i]=0;
}
void next(){
int i=n;
while (arr[i]==1 && i>=1){
arr[i]=0;i--;
}
if (i==0) ok=0;
else arr[i]=1;
}
bool check(){
int sum=0;
for (int i=1;i<=n;i++) sum+=arr[i];
return sum==k;
}
main()
{
int t; cin >> t;
while (t--){
cin >> n >> k;
ok=1;
kt();
while (ok){
if (check()){
for (int i=1;i<=n;i++) cout << arr[i];
cout << endl;
}
next();
}
}
}
11. HAHAHA
#include <iostream>
#include <vector>
using namespace std;

void generateHAHA(int n, string s) {


if (s.length() == n) {
if (s[0] == 'H' && s[n-1] == 'A') {
for (int i = 0; i < n-1; i++) {
if (s[i] == 'H' && s[i+1] == 'H') return;
}
cout << s << endl;
}
return;
}
generateHAHA(n, s + "A");
generateHAHA(n, s + "H");
}
int main() {
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
generateHAHA(N, "");
}
return 0;
}
12. XÂU NHỊ PHÂN TRƯỚC
#include<iostream>
using namespace std;
main()
{
int t; cin >> t;
while (t--){
string s; cin >> s;
int r=s.length()-1;
while (s[r]=='0') r--;
if (r<0){
for (int i=0;i<s.length();i++) s[i]='1';
}
else{
s[r]--;
for (int i=r+1;i<s.length();i++) s[i]++;
}
cout << s << endl;
}
}
13. SỐ THỨ TỰ HOÁN VỊ
#include<iostream>
using namespace std;
int n,arr[11],inp[11];
bool ok;
void ktao(){
for (int i=1;i<=n;i++) arr[i]=i;
}
void next(){
int i=n-1;
while (arr[i]>arr[i+1]) i--;
if (i==0) ok=0;
else{
int j=n;
while (arr[i]>arr[j]) j--;
int doi=arr[i];arr[i]=arr[j];arr[j]=doi;
int l=i+1,r=n;
while (l<r){
doi=arr[l];arr[l]=arr[r];arr[r]=doi;
l++;r--;
}
}
}
bool check(){
for (int i=1;i<=n;i++){
if (arr[i]!=inp[i]) return false;
}
return true;
}
int main()
{
int t; cin >> t;
while (t--){
int cnt=1,ok=1;
cin >> n;
ktao();
for (int i=1;i<=n;i++) cin >> inp[i];
while (ok){
if (check()) ok=0;
else{
cnt++;
next();
}
}
cout << cnt << endl;
}
}
14. SỐ THỨ TỰ TỔ HỢP
#include<iostream>
using namespace std;
int n,k,arr[16],inp[15];
bool ok;
void kt(){
for (int i=1;i<=k;i++) arr[i]=i;
}
void next(){
int i=k;
while (arr[i]==n-k+i) i--;
if (n==0) ok=0;
else{
arr[i]++;
for (int j=i+1;j<=k;j++) arr[j]=arr[j-1]+1;
}
}
bool compare(){
for (int i=1;i<=k;i++){
if (arr[i]!=inp[i]) return false;
}
return true;
}
main()
{
int t; cin >> t;
while (t--){
cin >> n >> k;
kt(); ok=1; int cnt=1;
for (int i=1;i<=k;i++) cin >> inp[i];
while (ok && !compare()){
cnt++; next();
}
cout << cnt << endl;
}
}
15. ĐẶT TÊN – 1
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
map<string,int> mp;
int n,k;
vector<string> vt;
bool ok=1;;
int arr[16];

void next(){
if (ok==1) for (int i=0;i<k;i++) cout << vt[arr[i]] << " ";
cout << endl;
int i=k-1;
while (arr[i]==vt.size()-k+i) i--;
if (i<0) ok=0;
else{
arr[i]++;
for (int j=i+1;j<k;j++) arr[j]=arr[j-1]+1;
}
}

main()
{
cin >> n >> k;
string tmp;
for (int i=0;i<n;i++){
cin >> tmp; mp[tmp]++;
}
for (auto x:mp) vt.push_back(x.first);
sort(vt.begin(),vt.end());
for (int i=0;i<k;i++) arr[i]=i;
while (ok) next();
}
16. ĐẶT TÊN – 2
#include<iostream>
using namespace std;
int n,k,arr[100];
bool ok=1;
void Init(){
cin >> n >> k;
for (int i=1;i<=k;i++) arr[i]=i;
}
void Out(){
for (int i=1;i<=k;i++) cout << (char)(arr[i]+64);
cout << endl;
}
void Combination(){
int i=k;
while (arr[i]==n-k+i) i--;
if (i==0) ok=0;
else{
arr[i]++;
for (int j=i+1;j<=k;j++) arr[j]=arr[j-1]+1;
}
}
main(){
int t; cin >> t;
while (t--){
Init();
while (ok){
Out();
Combination();
}
ok=1;
}
}
17. HOÁN VỊ DÃY SỐ
#include<iostream>
#include<algorithm>
using namespace std;
int n, arr[11];
bool ok;
void kt(){
cin >> n; for (int i=1;i<=n;i++) cin >> arr[i];
sort(arr+1,arr+n+1);
}
void next(){
int i=n-1;
while (arr[i]>arr[i+1]) i--;
if (i==0) ok=0;
else{
int j=n;
while (arr[i]>arr[j]) j--;
swap(arr[i],arr[j]);
reverse(arr+i+1,arr+n+1);
}
}
void out(){
for (int i=1;i<=n;i++) cout << arr[i] << " ";
cout << endl;
}
main()
{
kt();
ok=1;
while (ok){
out();
next();
}
}
18. LIỆT KÊ TỔ HỢP
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
map<int,int> mp;
int n,k;
vector<int> vt;
bool ok=1;;
int arr[16];

void next(){
if (ok==1) for (int i=0;i<k;i++) cout << vt[arr[i]] << " ";
cout << endl;
int i=k-1;
while (arr[i]==vt.size()-k+i) i--;
if (i<0) ok=0;
else{
arr[i]++;
for (int j=i+1;j<k;j++) arr[j]=arr[j-1]+1;
}
}

main()
{
cin >> n >> k;
int tmp;
for (int i=0;i<n;i++){
cin >> tmp; mp[tmp]++;
}
for (auto x:mp) vt.push_back(x.first);
sort(vt.begin(),vt.end());
for (int i=0;i<k;i++) arr[i]=i;
while (ok) next();
}
19. HOÁN VỊ XÂU KÝ TỰ
#include<iostream>
#include<algorithm>
char arr[11];
int dem[11];
int n;
bool ok=1;
void next(){
int i=n-1;
while (dem[i+1]<dem[i]) i--;
if (i==0) ok=0;
else{
int j=n;
while (dem[i]>dem[j]) j--;
int tmp=dem[i];dem[i]=dem[j];dem[j]=tmp;
int l=i+1,r=n;
while (l<r){
tmp=dem[l];dem[l]=dem[r];dem[r]=tmp;
l++;r--;
}
}
}
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
string s; cin >> s;
n=s.length();
for (int i=1;i<=n;i++){
arr[i]=s[i-1]; dem[i]=i;
}
while (ok){
for (int i=1;i<=n;i++) cout << arr[dem[i]];
cout << " "; next();
}
cout << endl; ok=1;
}
}
20. ĐỔI TIỀN
#include<iostream>
using namespace std;
int tien[10]={1000,500,200,100,50,20,10,5,2,1};
main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int cnt=0;
for (int i=0;i<10;i++){
if (n>=tien[i]){
n-=tien[i];
i=-1; cnt++;
}
}
cout << cnt << endl;
}
}
21. NHẦM CHỮ SỐ
#include<iostream>
using namespace std;
int MaxNumber(string s){
int res=0;
for (int i=0;i<s.length();i++){
if (s[i]=='5') s[i]='6';
res=res*10+s[i]-'0';
}
return res;
}
int MinNumber(string s){
int res=0;
for (int i=0;i<s.length();i++){
if (s[i]=='6') s[i]='5';
res=res*10+s[i]-'0';
}
return res;
}
main()
{
string a,b; cin >> a >> b;
cout << MinNumber(a)+MinNumber(b) << " " << MaxNumber(a)+MaxNumber(b);
}
22. SẮP ĐẶT XÂU KÝ TỰ 1
#include<iostream>
using namespace std;
main()
{
int n; cin >> n;
while (n--){
string s; cin >> s;
int arr[26]={0};
for (int i=0;i<s.length();i++) arr[s[i]-'a']++;
int max=arr[0];
for (int i=1;i<26;i++){
if (arr[i]>max) max=arr[i];
}
int len=max*2-s.length();
if (len>=2) cout << -1 << endl;
else cout << 1 << endl;
}
}
23. SẮP XẾP XEN KẼ
#include<iostream>
#include<algorithm>
using namespace std;
const long long module=10e9+7;
main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n);
for (int i=0;i<n/2;i++) cout << arr[n-1-i] << " " << arr[i] << " ";
if (n%2==1) cout << arr[n/2];
cout << endl;
}
}
24. SẮP XẾP THEO GIÁ TRỊ TUYỆT ĐỐI
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--)
{
int n, k;
cin >> n >> k;
int a[n];
vector<pair<int, int>> v(n);
for (int i = 0; i < n; i++)
{
cin >> a[i];
v[i].first = abs(a[i] - k);
v[i].second = i;
}
sort(v.begin(), v.end());
for (int i = 0; i < n; i++)
cout << a[v[i].second] << " ";
cout << endl;
}
}
25. HỢP VÀ GIAO CỦA HAI DÃY SỐ 1
#include<iostream>
#include<map>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n,m; cin >> n >> m;
int tmp;
map <int,int> hop,giao;
for (int i=0;i<n;i++){
cin >> tmp;
if (hop[tmp]==0) hop[tmp]++;
if (giao[tmp]==0) giao[tmp]++;
}
for (int i=0;i<m;i++){
cin >> tmp;
if (giao[tmp]==0) giao[tmp]++;
else giao[tmp]--;
if (hop[tmp]==0) hop[tmp]++;
}
for (auto x:hop) cout << x.first << " ";
cout << endl;
for (auto x:giao){
if (x.second==0) cout << x.first << " ";
}
cout << endl;
}
}
26. HỢP VÀ GIAO CỦA HAI DÃY SỐ 2
#include<iostream>
#include<map>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n,m; cin >> n >> m;
int tmp;
map <int,int> hop,giao;
for (int i=0;i<n;i++){
cin >> tmp;
if (hop[tmp]==0) hop[tmp]++;
if (giao[tmp]==0) giao[tmp]++;
}
for (int i=0;i<m;i++){
cin >> tmp;
if (giao[tmp]==0) giao[tmp]++;
else giao[tmp]--;
if (hop[tmp]==0) hop[tmp]++;
}
for (auto x:hop) cout << x.first << " ";
cout << endl;
for (auto x:giao){
if (x.second==0) cout << x.first << " ";
}
cout << endl;
}
}
27. SẮP XẾP [0 1 2]
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n);
for (int i=0;i<n;i++) cout << arr[i] << " ";
cout << endl;
}
}
28. SẮP XẾP DÃY CON LIÊN TỤC
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int a1[n],a2[n];
for (int i=0;i<n;i++){
cin >> a1[i]; a2[i]=a1[i];
}
sort(a2,a2+n);
int l=0,r=n-1;
while (a1[l]==a2[l]) l++;
while (a1[r]==a2[r]) r--;
cout << l+1 << " " << r+1 << endl;
}
}
29. CẶP SỐ CÓ TỔNG BẰNG K
#include<iostream>
#include<map>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n,k,tmp; cin >> n >> k;
map<int,int> mp;
for (int i=0;i<n;i++){
cin >> tmp; mp[tmp]++;
}
long long cnt=0;
for (auto x:mp){
if (x.first*2==k) cnt+=x.second*(x.second-1);
else cnt+=mp[k-x.first]*x.second;
}
cnt/=2;
cout << cnt << endl;
}
}
30. SẮP XẾP CHỮ SỐ
#include<iostream>
using namespace std;
int n,arr[100],cs[10],tmp,i;
void kt(){
for (int j=0;j<10;j++) cs[j]=0;
}
void InsertionSort(){
for (int j=1;j<n;j++){
tmp=arr[j];
int l=j-1;
while (l>=0 && arr[l]>tmp){
arr[l+1]=arr[l]; l--;
}
arr[l+1]=tmp;
}
}
void Tach(string s){
for (int i=0;i<s.length();i++) cs[s[i]-'0']++;
}
void Perform(){
for (int i=0;i<n;i++) cout << arr[i] << " ";
cout << endl;
}
void Create(){
n=0;
for (int j=0;j<10;j++){
if (cs[j]>0){
arr[n]=j;n++;cs[j]=0;
}
}
}
main()
{
int t; cin >> t;
while (t--){
int k; cin >> k;
kt();
string str[k]; for (int j=0;j<k;j++){
cin >> str[j]; Tach(str[j]);
}
Create();
InsertionSort();
Perform();
}
}
31. PHẦN TỬ LỚN NHẤT
#include<iostream>
#include<algorithm>
using namespace std;
main()
{
int t; cin >> t;
while (t--){
int n,k; cin >> n >> k;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n);
for (int i=n-1;i>=n-k;i--) cout << arr[i] << " ";
cout << endl;
}
}
32. SỐ LẦN XUẤT HIỆN
#include<iostream>
#include<algorithm>
using namespace std;
main()
{
int t; cin >> t;
while (t--){
int n,k; cin >> n >> k;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
int cnt=-1;
for (int i=0;i<n;i++){
if (arr[i]==k) cnt++;
}
if (cnt==-1) cout << cnt << endl;
else cout << cnt+1 << endl;
}
}
33. MERGE SORT
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int arr[n];
for (int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n);
for (int i=0;i<n;i++) cout << arr[i] << " ";
cout << endl;
}
}
34. TÍCH LỚN NHẤT – NHỎ NHẤT
#include<iostream>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int m,n; cin >> n >> m;
long long a,b,tmp;
cin >> a;
for (int i=1;i<n;i++){
cin >> tmp;
if (tmp>a) a=tmp;
}
cin >> b;
for (int i=1;i<m;i++){
cin >> tmp;
if (tmp<b) b=tmp;
}
cout << a*b << endl;
}
}
35. TRỘN HAI DÃY
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int m,n; cin >> n >> m;
long long arr[n+m];
for (int i=0;i<n+m;i++) cin >> arr[i];
sort(arr,arr+n+m);
for (int i=0;i<n+m;i++) cout << arr[i] << " ";
cout << endl;
}
}
36. BỔ SUNG PHẦN TỬ
#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
map <int,int> mp;
int tmp;
for (int i=0;i<n;i++){
cin >> tmp;
mp[tmp]++;
}
vector <int> vt;
int cnt=0;
for (auto x:mp){
vt.push_back(x.first); cnt++;
}
sort(vt.begin(),vt.end());
cout << vt[vt.size()-1]-vt[0]+1-cnt << endl;
}
}
37. TÌM KIẾM
#include<iostream>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n,x,tmp; cin >> n >> x;
int ok=-1;
for (int i=0;i<n;i++){
cin >> tmp;
if (x==tmp) ok=1;
}
cout << ok << endl;
}
}
38. TÌM KIẾM TRONG DÃY SẮP XẾP VÒNG
#include<iostream>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n,x,tmp; cin >> n >> x;
int ok=-1;
for (int i=1;i<=n;i++){
cin >> tmp;
if (x==tmp) ok=i;
}
cout << ok << endl;
}
}
39. SỐ NHỎ NHẤT VÀ NHỎ THỨ HAI
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n);
if (arr[0]==arr[n-1]) cout << -1 << endl;
else cout << arr[0] << " " << arr[1] << endl;
}
}
40. SẮP XẾP ĐỔI CHỖ TRỰC TIẾP
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=1;i<=n;i++) cin >> arr[i];
for (int i=1;i<n;i++){
for (int j=i+1;j<=n;j++){
if (arr[i]>arr[j]) swap(arr[i],arr[j]);
}
cout << "Buoc " << i << ": ";
for (int i=1;i<=n;i++) cout << arr[i] << " ";
cout << endl;
}
}
41. SẮP XẾP CHỌN
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=1;i<=n;i++) cin >> arr[i];
for (int i=1;i<n;i++){
int tmp=arr[i],idx=i;
for (int j=i;j<=n;j++){
if (tmp>arr[j]){
tmp=arr[j];
idx=j;
}
}
swap(arr[idx],arr[i]);
cout << "Buoc " << i << ": ";
for (int j=1;j<=n;j++) cout << arr[j] << " ";
cout << endl;
}
}
42. SẮP XẾP CHÈN
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
vector<int> vt;
for (int i=0;i<n;i++){
vt.push_back(arr[i]);
sort(vt.begin(),vt.end());
cout << "Buoc " << i << ": ";
for (int j=0;j<vt.size();j++) cout << vt[j] << " ";
cout << endl;
}
}
43. SẮP XẾP NỔI BỌT
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=1;i<=n;i++) cin >> arr[i];
for (int i=1;i<=n;i++){
int cnt=0;
for (int j=1;j<n;j++){
if (arr[j]>arr[j+1]){
cnt++; swap(arr[j],arr[j+1]);
}
}
if (cnt==0) break;
else{
cout << "Buoc " << i << ": ";
for (int k=1;k<=n;k++) cout << arr[k] << " ";
cout << endl;
}
}
}
44. SẮP XẾP ĐỔI CHỖ TRỰC TIẾP – LIỆT KÊ NGƯỢC
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
vector<string> vt;
int arr[n]; for (int i=1;i<=n;i++) cin >> arr[i];
for (int i=1;i<n;i++){
for (int j=i+1;j<=n;j++){
if (arr[i]>arr[j]) swap(arr[i],arr[j]);
}
string tmp="";
tmp=tmp+"Buoc "+to_string(i)+": ";
for (int i=1;i<=n;i++) tmp+=to_string(arr[i])+" ";
vt.push_back(tmp);
}
for (int i=vt.size()-1;i>=0;i--) cout << vt[i] << endl;
}
}
45. SẮP XẾP CHỌN – LIỆT KÊ NGƯỢC
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=1;i<=n;i++) cin >> arr[i];
vector<string> vt;
for (int i=1;i<n;i++){
int tmp=arr[i],idx=i;
for (int j=i;j<=n;j++){
if (tmp>arr[j]){
tmp=arr[j];
idx=j;
}
}
swap(arr[idx],arr[i]);
string xau="";
xau=xau+"Buoc "+to_string(i)+": ";
for (int i=1;i<=n;i++) xau+=to_string(arr[i])+" ";
vt.push_back(xau);
}
for (int i=vt.size()-1;i>=0;i--) cout << vt[i] << endl;
}
46. SẮP XẾP CHÈN – LIỆT KÊ NGƯỢC
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
vector<int> vt;
vector<string> xuat;
for (int i=0;i<n;i++){
vt.push_back(arr[i]);
sort(vt.begin(),vt.end());
string tmp="";
tmp=tmp+"Buoc "+to_string(i)+": ";
for (int i=0;i<vt.size();i++) tmp+=to_string(vt[i])+" ";
xuat.push_back(tmp);
}
for (int i=xuat.size()-1;i>=0;i--) cout << xuat[i] << endl;
}
47. SẮP XẾP NỔI BỌT – LIỆT KÊ NGƯỢC
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
vector <string> vt;
int arr[n]; for (int i=1;i<=n;i++) cin >> arr[i];
for (int i=1;i<=n;i++){
int cnt=0;
for (int j=1;j<n;j++){
if (arr[j]>arr[j+1]){
cnt++; swap(arr[j],arr[j+1]);
}
}
if (cnt==0) break;
else{
string tmp="";
tmp=tmp+"Buoc "+to_string(i)+": ";
for (int i=1;i<=n;i++) tmp+=to_string(arr[i])+" ";
vt.push_back(tmp);
}
}
for (int i=vt.size()-1;i>=0;i--) cout << vt[i] << endl;
}
}
48. SẮP XẾP CHẴN LẺ
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n,tmp; cin >> n;
vector<long long> a1,a2;
for (int i=1;i<=n;i++){
cin >> tmp;
if (i%2==0) a2.push_back(tmp);
else a1.push_back(tmp);
}
sort(a1.begin(),a1.end());
sort(a2.begin(),a2.end(),greater<long long>());
int d1=a1.size(),d2=a2.size();
if (d1==d2){
for (int i=0;i<d1;i++) cout << a1[i] << " " << a2[i] << " ";
}
else if (d1>d2){
for (int i=0;i<d1;i++){
if (i==d1-1) cout << a1[i];
else cout << a1[i] << " " << a2[i] << " ";
}
}
else{
for (int i=0;i<d2;i++){
if (i==d2-1) cout << a2[i];
else cout << a1[i] << " " << a2[i] << " ";
}
}
}
49. CHÊNH LỆCH NHỎ NHẤT
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int n; cin >> n;
int arr[n]; for (int i=0;i<n;i++) cin >> arr[i];
sort(arr,arr+n);
int res=arr[1]-arr[0];
for (int i=1;i<n-1;i++){
if (arr[i+1]-arr[i]<res) res=arr[i+1]-arr[i];
}
cout << res << endl;
}
}
50. NGÀY ĐẶC BIỆT
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
vector<string> a1 = {"02", "20", "22"};
vector<string> a2 = {"02"};
vector<string> a3 = {"2000", "2002", "2020", "2022", "2200", "2202", "2220", "2222"};
for (int i = 0; i < a1.size(); i++)
for (int j = 0; j < a2.size(); j++)
for (int k = 0; k < a3.size(); k++)
cout << a1[i] + "/" + a2[j] + "/" + a3[k] << endl;
}
51. CHUYỂN DANH SÁCH CẠNH SANG DANH SÁCH KỀ
#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main()
{
int t; cin >> t;
while (t--){
int v,e; cin >> v >> e;
map<int,vector<int>> mp;
int dau,cuoi;
for (int i=0;i<e;i++){
cin >> dau >> cuoi;
mp[dau].push_back(cuoi);
mp[cuoi].push_back(dau);
}
for (auto x:mp){
cout << x.first << ": ";
for (int i=0;i<x.second.size();i++) cout << x.second[i] << " ";
cout << endl;
}
}
}
52.

You might also like