You are on page 1of 28

CODE C++

1. HELLO WORLD:
#include<iostream>
using namespace std;
main()
{
cout << "Hello PTIT.";
}
2. THUẬT TOÁN SINH:
#include<iostream>
#include<cmath>
using namespace std;
main()
{
int n; cin >> n;
int cnt=n/2,i=0,arr[cnt];
while (i<pow(2,cnt)){
int j=cnt,a=i;
while (j>=1){
arr[j]=a%2;
j--; a/=2;
}
if (n%2==0){
for (int k=1;k<=cnt;k++) cout << arr[k] << " ";
for (int k=cnt;k>=1;k--) cout << arr[k] << " ";
cout << endl;
}
else{
for (int y=0;y<=1;y++){
for (int k=1;k<=cnt;k++) cout << arr[k] << " ";
cout << y << " ";
for (int k=cnt;k>=1;k--) cout << arr[k] << " ";
cout << endl;
}
}
i++;
}
}
3. 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] << " ";
}
}
4. 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;
}
}
}
5. 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;
}
}
6. 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;
}
}
7. 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;
}
}
8. 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;
}
}
9. 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;
}
}
10. 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;
}
}
11. 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;
}
}
12. 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();
}
}
}
13. 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;
}
14. 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;
}
}
15. 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;
}
}
16. 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;
}
}
17. ĐẶ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();
}
18. ĐẶ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;
}
}
19. 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();
}
}
20. 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();
}
21. 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;
}
}
22. ĐỔ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;
}
}
23. 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);
}
24. 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;
}
}
25. 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;
}
}
26. 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;
}
}
27. 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;
}
}
28. 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;
}
}
29. 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;
}
}
30. 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;
}
}
31. 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;
}
}
32. 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();
}
}
33. 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;
}
}
34. 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;
}
}
35. 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;
}
}
36. 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;
}
}
37. 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;
}
}
38. 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;
}
}
39. 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;
}
}
40. 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;
}
}
41. 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;
}
}
42. 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;
}
}
43. 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;
}
}
44. 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;
}
}
45. 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;
}
}
}
46. 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;
}
}
47. 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;
}
48. 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;
}
49. 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;
}
}
50. 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] << " ";
}
}
}
51. 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;
}
}
52. 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;
}
53. 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;
}
}
}
54.

You might also like