Cho một chuỗi, chương trình phải hiển thị đường dẫn ngắn nhất sẽ in chuỗi ra màn hình bằng đường dẫn ngắn nhất đó.
Màn hình Like sẽ lưu trữ các bảng chữ cái ở định dạng
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Ví dụ
Input: HUP Output : Move Down Move Down Move Down destination reached Move Left Move Left Move Down Move Down Move Down destination reached Move Up destination reached
Cách tiếp cận được sử dụng ở đây là lưu trữ các ký tự trong ma trận n x n và thực hiện thao tác sau -
If row difference is negative then move up If row difference is positive then move down If column difference is negative then go left If column difference is positive then we go right
Thuật toán
START Step 1 -> Declare Function void printpath(char str[]) Declare variable int i = 0 and cx=0 and cy=0 Loop While str[i] != '\0' Declare variable as int n1 = (str[i] - 'A') / 5 Declare variable as int n2 = (str[i] - 'B' + 1) % 5 Loop while cx > n1 Print move up cx— End Loop while cy > n2 Print Move Left Cy— End Loop while cx < n1 Print move down Cx++ End Loop while cy < n2 Print move down Cy++ End Print destination reached I++ Step 2 -> in main() Declare char str[] = {"HUP"} Call printpath(str) STOP
Ví dụ
#include <stdio.h> void printpath(char str[]){ int i = 0; // start from character 'A' present at position (0, 0) int cx = 0, cy = 0; while (str[i] != '\0'){ // find cordinates of next character int n1 = (str[i] - 'A') / 5; int n2 = (str[i] - 'B' + 1) % 5; // Move Up if destination is above while (cx > n1){ printf("Move Up\n"); cx--; } // Move Left if destination is to the left while (cy > n2){ printf("Move Left\n"); cy--; } // Move down if destination is below while (cx < n1){ printf("Move Down\n"); cx++; } // Move Right if destination is to the right while (cy < n2){ printf("Move Down\n"); cy++; } // At this point, destination is reached printf("destination reached\n"); i++; } } int main(int argc, char const *argv[]){ char str[] = {"HUP"}; printpath(str); return 0; }
Đầu ra
Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau -
Move Down Move Down Move Down destination reached Move Left Move Left Move Down Move Down Move Down destination reached Move Up destination reached