Giải chi tiết chuyên đề Tin học Khoa học máy tính 11 Cánh diều mới bài 6: Dự án Xây dựng chương trình sử dụng kĩ thuật duyệt

Giải bài 6: Dự án Xây dựng chương trình sử dụng kĩ thuật duyệt sách chuyên đề Tin học Khoa học máy tính 11 Cánh diều. Phần đáp án chuẩn, hướng dẫn giải chi tiết cho từng bài tập có trong chương trình học của sách giáo khoa. Hi vọng, các em học sinh hiểu và nắm vững kiến thức bài học.

Bài toán 1: Biểu diễn số

Biết rằng 1 số tự nhiên n (n<1000) luôn tồn tại số nguyên dương k (k <20) và 1 cách điền dấu cộng hoặc dấu trừ vào các vị trí dấu * dưới đây để nhận 1 đẳng thức đúng:

*1$^{2}$*2$^{2}$*...*k$^{2}$ = n

Với n = 0, ta có: + 1$^{2}$ + 2$^{2}$ - 3$^{2}$ + 4$^{2}$ - 5$^{2}$ -6$^{2}$ + 7$^{2}$ = 0

Hãy viết chương trình nhập vào một số tự nhiên n (n<1000), đưa ra 1 cách biểu diễn thỏa mãn

Hướng dẫn trả lời: 

uses crt;

var n,i:integer;

s:real;

begin

clrscr;

write('n='); readln(n);

if (n>=0) and (n<=100) then

begin

s:=0;

for i:=1 to n do

s:=s+(i/(i+1));

writeln('tong la: ',s);

end

else writeln('vui long nhap lai');

readln;

end.

Bai toán 2. Knock out chào 2022

Sử dụng lần lượt 9 chữ số từ 1 đến 9 cùng các phép toán cộng, trừ, nhân, chia để tạo ra các dăng thức có kết quả là 2022. Ví dụ, 1 234 - 5 - 6 + 789") sẽ trả về 2022 là một cách thoả mãn.

Trong Python cung cấp hàm eval(). đầu vào là xâu biểu diễn một biểu thức, hàm sẽ trả về giá trị của biểu thức đó. Ví dụ. eval('1234 + 5 - 6 + 789") sẽ trả về 2 022.

Hướng dẫn trả lời: 

Gợi ý: hàm eval()

x = 1

print(eval('x + 1'))

Đầu ra

2

Ở đây, eval() hàm đánh giá biểu thức x + 1 và print được  sử dụng để hiển thị giá trị này.

Bài toán 3. Số siêu nguyên tố

Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố. Ví dụ, 2 333 là số siêu nguyên tố có 4 chữ số vì 233, 232 cũng là các số nguyên tố.

Cho số nguyên dương N (0 < N < 10), đưa ra các số siêu nguyên tố có N chữ số cùng số lượng của chúng. Ví dụ, với N = 4 có 16 số: 2 333, 2 339, 2 393, 2 399, 2 939, 3 119, 3 137, 3 733, 3 739,3 793,3 797, 5 939, 7 193, 7 331, 7 333, 7 393.

Hướng dẫn trả lời: 

Gợi ý:
#include<iostream>

#include<queue>

#include<math.h>

using namespace std;

bool isPrime(int n)

{ if (n<2)

return false;

for (int i=2; i<=sqrt(n); i++)

if (n%i==0)

return false;

return true; }

int main(){ queue<int> q;

int n; cin >> n;

for (int i = 2; i <= n, i < 10; i++){ if (isPrime(i)){ q.push(i); } }

while (!q.empty())

{

for (int i = 1; i <= 9; i++)

{

int k = q.front()*10 + i; if ( k <= n && isPrime(k))

{

q.push(q.front()*10 + i);

}

} cout << q.front() << " "; q.pop();

}

return 0;

}

Bài toán 4. Mã đi tuần

Cho bản cờ n x n ô tìm cách di chuyển một quân mã xuất phát từ một ô bất kì, mã di chuyển theo luật cờ vua và đi qua tất cả các ô, mỗi ô qua đúng một lần. Ví dụ. Hình 1 là một phương án với n - 5.

Giải chi tiết chuyên đề Tin học Khoa học máy tính 11 Cánh diều mới bài 6: Dự án Xây dựng chương trình sử dụng kĩ thuật duyệt

Hướng dẫn trả lời: 

#define MAX 8
using namespace std;
int A[MAX][MAX] = { 0 };//Khởi tạo mảng giá trị 0
int X[8] = { -2,-2,-1,-1, 1, 1, 2, 2};
int Y[8] = { -1, 1,-2, 2,-2, 2,-1, 1};
int n;// Số phần tử của bàn cờ bạn muốn tạo
int main() {
}
//Hàm xuất//
void xuat() {
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cout << A[i][j] << " ";
cout << endl;

//Hàm bước đi

void diChuyen(int x, int y) {

++dem;//Tăng giá trị bước đi
A[x][y] = dem;//Đánh dấu đã đi
        //Tìm tất cả các bước đi có thể đi và tiến hành đi thử
for (int i = 0; i < 8; i++) {
//Kiểm tra xem mã đã đi hết bàn cờ chưa
if (dem == n * n) {
cout << "Cac buoc di la: \n";
xuat();
exit(0);//kết thúc chương trình
}
//Nếu chưa đi hết bàn cờ thì tạo bước đi mới
int u = x + X[i];//tạo một vị trí x mới
int v = y + Y[i];//tạo một vịi trí y mới
//Nếu hợp lẹ thì tiến hành di chuyển
if (u >= 0 && u < n&&v >= 0 && v < n&& A[u][v] == 0)
diChuyen(u, v);
}
//Nếu không tìm được bước đi thì ta phải trả lại các giá trị ban đầu
--dem;
A[x][y] = 0;

}

#include<stdio.h>
#define MAX 8
using namespace std;
int A[MAX][MAX] = { 0 };//Khởi tạo mảng giá trị 0
int X[8] = { -2,-2,-1,-1, 1, 1, 2, 2};
int Y[8] = { -1, 1,-2, 2,-2, 2,-1, 1};
int dem = 0;//Số bước đi
int n;
void xuat() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%2d ", A[i][j]);
cout << endl;
}
cout << endl;
}
void diChuyen(int x, int y) {
++dem;//Tăng giá trị bước đi
A[x][y] = dem;//Đánh dấu đã đi
for (int i = 0; i < 8; i++) {
//Kiểm tra xem mã đã đi hết bàn cờ chưa
if (dem == n * n) {
cout << "Cac buoc di la: \n";
xuat();
exit(0);//kết thúc chương trình
}
//Nếu chưa đi hết bàn cờ thì tạo bước đi mới
int u = x + X[i];//tạo một vị trí x mới
int v = y + Y[i];//tạo một vịi trí y mới
//Nếu hợp lẹ thì tiến hành di chuyển
if (u >= 0 && u < n&&v >= 0 && v < n&& A[u][v] == 0)
diChuyen(u, v);
}
//Nếu không tìm được bước đi thì ta phải trả lại các giá trị ban đầu
--dem;
A[x][y] = 0;
}
int main() {
cout << "Nhap n: ";
cin >> n;
int a, b;
cout << "Nhap vi tri ban dau.\nx: ";
cin>>a;
cout << "y: ";
cin >> b;
diChuyen(a, b);
//Nếu không tìm được bước đi thì sẽ thông báo
cout << "Khong tim thay duong di.";
}

Bài toán 5. Tìm đường trong mê cung

Một mê cung được biểu diễn bằng 1 bảng số kích thước m x n . Các hàng của bảng được đánh số từ 0 đến m - 1, các cột của bảng được đánh số từ 0 đến m-1, các cột được đánh số từ 0 đến n -1. Ô nằm giao giữa hàng i và cột j là ô (i,j) mô tả phòng (i,j). Trong mê cung có 1 số phòng cấm không được phép di chuyển vào. Xuất phát tại phòng (0,0), người chơi cần tìm 1 đường đi di chuyển tới phòng (m-1, n - 1) (Hình 2)

Giải chi tiết chuyên đề Tin học Khoa học máy tính 11 Cánh diều mới bài 6: Dự án Xây dựng chương trình sử dụng kĩ thuật duyệt

Hướng dẫn trả lời: 

  • Bước 1.  Thiết kế thuật toán.
  • Bước 2. Sử dụng các lệnh trong Python để viết chương trình.
  • Bước 3. Thử nghiệm, kiểm thử để sửa lỗi, hiệu chỉnh chương trình.
Tìm kiếm google: Giải chuyên đề Tin học Khoa học máy tính 11 Cánh diều bài 6, giải chuyên đề Tin học Khoa học máy tính 11 CD bài 6, Giải bài 6 Dự án Xây dựng chương trình sử dụng kĩ thuật duyệt

Xem thêm các môn học

Giải chuyên đề khoa học máy tính 11 cánh diều


Đia chỉ: Tòa nhà TH Office, 90 Khuất Duy Tiến, Thanh Xuân, Hà Nội
Điện thoại hỗ trợ: Fidutech - click vào đây
Chúng tôi trên Yotube
Cùng hệ thống: baivan.net - Kenhgiaovien.com - tech12h.com