Hơi dài do nó là đệ quy (dùng while sẽ dễ)
/* _user_Capricoder_ */
// to daoanhviet2009
#include <bits/stdc++.h>
using namespace std;
string x, y, smin, smax;
void dequymin(int i, int j)
{
if (i == x.size())
{
while (j < y.size())
{
smin += y[j];
++j;
}
return;
}
if (j == y.size())
{
while (i < x.size())
{
smin += x[i];
++i;
}
return;
}
smin += min(y[j], x[i]);
if (x[i] < y[j]) ++i;
else ++j;
dequymin(i, j);
}
void dequymax(int i, int j)
{
if (i == x.size())
{
while (j < y.size())
{
smax += y[j];
++j;
}
return;
}
if (j == y.size())
{
while (i < x.size())
{
smax += x[i];
++i;
}
return;
}
smax += max(y[j], x[i]);
if (x[i] > y[j]) ++i;
else ++j;
dequymax(i, j);
}
int main()
{
ios::sync_with_stdio(0);
cout << "Nhap x: "; cin >> x;
cout << "Nhap y: "; cin >> y;
dequymin(0, 0);
dequymax(0, 0);
cout << smin << '\n' << smax;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
string a, b;
int max_length, m, n;
int current_a = 0;
int current_b = 0;
string current_result;
// Set lưu các kết quả liệt kê
unordered_set<long long> results;
void add() {
// Nếu độ dài xâu kết quả mà thoả mãn bằng độ dài của A và B cộng lại thì thêm và results
results.insert(stoll(current_result)); // stoll là hàm chuyển string sang long long
}
// Hàm quay lui dùng để liệt kê
void backtrack(int i) {
for (int j = 1; j <= 2; j++) {
// Nếu j = 1 thì đến chữ số thứ 1 chọn A
// = 2 thì chọn B
if (j == 1) {
// Tăng vị trí ở string A lên một đơn vị (giống kiểu chuyển đến index tiếp theo)
current_a++;
// Nếu vẫn chưa vượt quá độ dài A
if (current_a > m) { current_a--; continue; }
else { current_result[i] = a[current_a]; }
}
else {
// Tăng vị trí ở string B lên một đơn vị (giống kiểu chuyển đến index tiếp theo)
current_b++;
// Nếu vẫn chưa vượt quá độ dài B
if (current_b > n) { current_b--; continue; }
else { current_result[i] = b[current_b]; }
}
if (i == max_length) {
// Nếu i == max_length thì thêm xâu kq vào results
add();
}
else {
// Nếu chưa thì tiếp tục đệ quy tìm số kế tiếp thêm vào current_result
backtrack(i+1);
}
// Trả lại biến A và B về như ban đầu
if (j == 1) { current_a--; }
else { current_b--; }
}
}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
// Thay vì dùng int, ta sử dụng string để dễ dàng truy cập vào hàng đơn vị, hàng chục, hàng trăm, ...
cin >> a >> b;
m = (int)a.size(); n = (int)b.size();
// Max length là độ dài lớn nhất khi ghép A và B
max_length = m + n;
for (int i = 0; i <= max_length; i++) current_result += "0";
// Thêm dấu cách để string bắt đầu từ 1
a = " " + a;
b = " " + b;
// Dùng backtrack (quay lui) để sinh mọi trường hợp có thể xảy ra
backtrack(1); // String bắt đầu từ 1
long long min_ = 1e18 * 2;
for (auto x : results) min_ = min(x, min_);
long long max_ = -1e18 * 2;
for (auto x : results) max_ = max(x, max_);
cout << min_ << "\n" << max_ << "\n";
return 0;
}
Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.
Nguồn : Wikipedia - Bách khoa toàn thưLớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!
Nguồn : ADMIN :))Xem thêm tại https://loigiaisgk.com/cau-hoi or https://giaibtsgk.com/cau-hoi
Copyright © 2021 HOCTAPSGK