đếm In Xâu Nhị Phân (dùng Thuật Toán Sinh )
Chuyển đến nội dung chính
đếm in xâu nhị phân (dùng thuật toán sinh )
Đề bài: Một xâu nhị phân độ dài n được gọi là thuận nghịch hay đối xứng nếu đảo ngược xâu nhị phân đó ta vẫn nhận được chính nó. Cho số tự nhiên n (n nhập từ bàn phím). Hãy viết chương trình liệt kê tất cả các xâu nhị phân thuận nghịch có độ dài n. Các xâu nhị phân tìm được ghi lại trong file ketqua.out theo khuôn dạng: ·Dòng đầu tiên ghi lại số K là số các xâu thuận nghịch có độ dài n tìm được; ·K dòng kế tiếp ghi lại mỗi dòng một xâu nhị phân thuận nghịch có độ dài n. Hai phần tử khác nhau của xâu thuận nghịch được ghi cách nhau một vài khoảng trống. Ví dụ với n = 4 ta tìm được 4 xâu nhị phân thuận nghịch như dưới đây. ketqua.out 4 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 giải: #include<iostream> #include<iomanip> using namespace std; void xuat( int a[], int n){ for(int i = 0; i < n; i++) cout << setw(5) << a[i]; cout << endl; } void sinh( int a[], int n, int &ok){ int i = n-1; while( i >= 0 && a[i] == 1){ a[i] = 0; i--; } if( i >= 0){ a[i] = 1; } else ok = 0; } int ktmang(int a[100], int n) { int i = 0; int j = n - 1; while( i < n/2) { if(a[i] != a[j]) return 0; i++; j--; } return 1; } void sinhlientuc(int a[], int n, int ok, int kq[1000][100], int &demKq){ while(ok){ if(ktmang(a, n)){ for(int i = 0; i < n; i++) kq[demKq][i] = a[i]; demKq++; } sinh(a,n,ok); } } void inKetqua(int kq[1000][100], int demKq, int n){ cout << demKq<<endl; for(int i = 0; i < demKq; i++){ for(int j = 0; j < n; j++) cout << setw(2) << kq[i][j]; cout << endl; } } int main(){ int n; int ok=1; int a[100] = {}; int kq[1000][100]; int demKq = 0; cin >> n; sinhlientuc(a, n, ok, kq, demKq); inKetqua(kq, demKq, n); }Nhận xét
Nặc danhlúc 22:15 4 tháng 2, 2023anh ơi cho em xem lưu đồ thuật toán với em không hiểu anh viết gì cả
Trả lờiXóaTrả lời- Trả lời
Đăng nhận xét
Bài đăng phổ biến từ blog này
Đổi chỗ chữ số đầu tiên và chữ số cuối cùng của một số
Đ ề bài: Viết chương trình C cho phép nhập vào một số nguyên n và thực hiện đổi vị trí của chữ cái đầu tiên và chữ cái cuối cùng. Lưu ý trong trường hợp chữ số cuối cùng là 0 thì khi đổi chỗ sẽ được loại bỏ (ví dụ 9800 -> 809) INPUT 1234 OUTPUT 4321 Giải: #include<iostream> using namespace std; int n; int a[ 100 ]; void doivtri() { int i = 0 ; while (n > 0 ) { a[i] = n % 10 ; n = n / 10 ; i ++ ; } if ( a[ 0 ] != 0 ) cout << a[ 0 ]; for ( int j = i - 2 ; j >= 1 ; j -- ) cout << a[j]; cout << a[i - 1 ]; } int main() { cin >> n; doivtri(); } Đọc thêmSố đẹp tăng giảm
Đề bài: Một số được gọi là số tăng giảm nếu số đó có các chữ số thỏa mãn hoặc tăng dần, hoặc giảm dần từ trái qua phải. Hãy đếm các số nguyên tố là số tăng giảm với số chữ số cho trước INPUT 2 O UTPUT 20 Giải bài: #include<iostream> #include<cmath> using namespace std; int n; bool nto ( int x) { if (x < 2 ) return false ; for ( int i = 2 ; i <= sqrt(x); i ++ ) if (x % i == 0 ) return false ; return true ; } //1234 -> 4, 123, 3 < 4 bool tang ( int x) { int t = x % 10 ; x /= 10 ; while (x > 0 ) { if (t <= x % 10 ) return false ; t = x % 10 ; x /= 10 ; } return true ; } bool giam ( int x) { int t = x % 10 ; x /= 10 ; while (x > 0 ) { if (t >= x % 10 ) return false ; t = x % 10 ; x /= 10 ; } return true ; } void tanggiam () { cin >> n; int dem = 0 ; for ( int i = pow( 10 , n - 1 ); i < pow( 10 , n); i ++ ) {... Đọc thêmTìm số Strong trong khoảng cho trước
Đề bài : Viết chương trình cho phép nhập vào hai số nguyên dương và tìm tất cả các số Strong (là số có tổng giai thừa các chữ số bằng chính nó) nằm trong khoảng đó (nếu không tồn tại số nào thì in ra 0) INPUT 1 1000 OUTPUT 1 2 145 Giải : #include<iostream> using namespace std; int n,m; void input () { cin >> n; cin >> m; } int giaithua( int n) { int t = 1 ; for ( int i = 1 ; i <= n; i ++ ) { t = t * i; } return t; } int tong( int n) { int tong = 0 ; int m = n; while (n > 0 ) { int t = n % 10 ; tong = tong + giaithua(t); n = n / 10 ; } if (tong == m) return 1 ; else return 0 ; } int main() { input (); if (n <= m) { for ( int i = n; i <= m; i ++ ) { if (tong(i)) cout << i << " " ; } } else { for ( int i = m; i <= n; i ++ ) { if (tong(i)) cout << i << " " ; } } return 0 ; } Đọc thêmBlog Archive
- 2018 16
- tháng 4 7
- tháng 3 9
- sắp xếp chèn ( Insertion sort )
- sắp xếp chọn ( selection sort)
- đếm in xâu nhị phân (dùng thuật toán sinh )
- sử dụng quay lui in số thỏa mãn các điều kiện
- sử dụng giải thuật sinh sinh số thập phân thỏa mãn...
- Là số nguyên tố, từng số là nguyên tố, tổng, tích ...
- là số nguyên tố, mỗi chữ số là nguyên tố, tổng là ...
- Là nguyên tố đảo ngược là ngto, tổng các chữ số là...
- là sô nguyên tố, là số thuận nghịch, chuyển cơ số ...
- 2017 29
- tháng 8 28
- tháng 7 1
- 2015 5
- tháng 9 5
Nhãn
- Lập trình C
- Lập trình C++
- Lập trình Java
Báo cáo vi phạm
Từ khóa » đếm Số Xâu Palindrome Có độ Dài N
-
Đếm Số Palindrome - Kiến Thức 24h
-
Một Vài Bài Tập Về Palindrome - VNOI
-
Chia Một Xâu Thành ít Nhất Các Palindrome( độ Dài ≤ 1000) - 123doc
-
Quy Hoạch động Bài Toán Palindrome - Tài Liệu Text - 123doc
-
Một Số Thuật Toán Tìm Xâu Con đối Xứng Dài Nhất - Xemtailieu
-
[PDF] TỔ TIN HỌC Palindrome Hay Còn Gọi Là Xâu đối
-
PLP - Palindrome - NTUCoder - Bài Tập
-
Bài Tập Xâu (3) - Diễn đàn Tin Học Văn Lang - Vạn Ninh
-
[Lời Giải]Tổng Hợp Các Bài Toán đếm Xâu
-
Thuật Toán C++ Dãy Palindrome Dài Nhất Trong Một Xâu Khi Xóa đi ...
-
Đếm Số Chuỗi Con Với K Ký Tự Riêng Biệt - TutorialCup
-
Thuật Toán Manacher - Tìm Tất Cả Xâu Con Palindrome Với độ Phức ...
-
Bài Tập Môn Toán Rời Rạc - TaiLieu.VN
-
Buổi 1,2,3 XÂU KÍ TỰ
-
[DOC] Chương 1 - THPT Kim Sơn A
Nặc danh