Trong bài toán này, chúng ta được cung cấp một mảng chuỗi str []. Nhiệm vụ của chúng ta là tìm điểm của tất cả các chuỗi trong mảng. Điểm số được định nghĩa là tích số của vị trí của chuỗi với tổng các giá trị theo thứ tự bảng chữ cái của các ký tự trong chuỗi.
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào
str[] = {“Learn”, “programming”, “tutorials”, “point” }
Giải thích
Vị trí của “Tìm hiểu” - 1 →
sum = 12 + 5 + 1 + 18 + 14 = 50. Score = 50
Vị trí của “lập trình” - 2 →
sum = 16 + 18 + 15 + 7 + 18 + 1 + 13 + 13 + 9 + 14 + 7 = 131 Score = 262
Vị trí của "hướng dẫn" - 1 →
sum = 20 + 21 + 20 + 15 + 18 + 9 + 1 + 12 + 19 = 135 Score = 405
Vị trí của “điểm” - 1 →
sum = 16 + 15 + 9 + 14 + 20 = 74 Score = 296
Để giải quyết vấn đề này, một cách tiếp cận đơn giản sẽ lặp lại trên tất cả các chuỗi của mảng. Đối với mỗi chuỗi, lưu trữ vị trí và tìm tổng các giá trị theo thứ tự bảng chữ cái của chuỗi. Nhiều vị trí và tổng hợp và trả lại sản phẩm.
Thuật toán
Bước 1 - Lặp lại chuỗi và lưu trữ vị trí và đối với mỗi chuỗi, hãy thực hiện theo bước 2 và 3 -
Bước 2 - Tính tổng các bảng chữ cái của chuỗi.
Bước 3 - in tích của vị trí và tổng.
Ví dụ
Chương trình minh họa hoạt động của giải pháp trên,
#include <iostream> using namespace std; int strScore(string str[], string s, int n, int index){ int score = 0; for (int j = 0; j < s.length(); j++) score += s[j] - 'a' + 1; score *= index; return score; } int main(){ string str[] = { "learn", "programming", "tutorials", "point" }; int n = sizeof(str) / sizeof(str[0]); string s = str[0]; for(int i = 0; i<n; i++){ s = str[i]; cout<<"The score of string ' "<<str[i]<<" ' is "<<strScore(str, s, n, i+1)<<endl; } return 0; }
Đầu ra
The score of string ' learn ' is 50 The score of string ' programming ' is 262 The score of string ' tutorials ' is 405 The score of string ' point ' is 296