จากสตริง เราต้องนับจำนวนองค์ประกอบที่ใหญ่กว่าทางด้านขวาของอักขระแต่ละตัว มาดูตัวอย่างกัน
ป้อนข้อมูล
string = "abc"
ผลผลิต
2 1 0
มีองค์ประกอบที่ใหญ่กว่า a 2 ตัวทางด้านขวา
มีองค์ประกอบที่ใหญ่กว่า b 1 ตัวอยู่ทางด้านขวา
มีองค์ประกอบที่ใหญ่กว่า c 0 ตัวที่ด้านขวา
อัลกอริทึม
-
เริ่มต้นสตริง
-
เริ่มต้นอาร์เรย์เพื่อติดตามการนับ
-
เขียนสองลูปเพื่อวนซ้ำบนสตริง
-
ใช้ถ่านทีละตัวและเปรียบเทียบกับอักขระทั้งหมดหลังจากนั้น
-
เพิ่มจำนวนอักขระที่สอดคล้องกันในอาร์เรย์การนับหากองค์ประกอบปัจจุบันน้อยกว่าองค์ประกอบถัดไป
-
-
พิมพ์จำนวนตัวอักษรทั้งหมด
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
Implementation
Following is the implementation of the above algorithm in C++
#include <bits/stdc++.h> using namespace std; void countCharNextLargerElementsCount(string str) { int len = str.length(), count[len]; for (int i = 0; i < len; i++) { count[i] = 0; } for (int i = 0; i < len; i++) { for (int j = i + 1; j < len; j++) { if (str[i] < str[j]) { count[i]++; } } } for (int i = 0; i < len; i++) { cout << count[i] << " "; } cout << endl; } int main() { string str = "abcdefgh"; countCharNextLargerElementsCount(str); return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
7 6 5 4 3 2 1 0