กำหนดรายการคำ (List of Words) เป้าหมายคือสร้างประโยคทั้งหมดที่เป็นไปได้ซึ่งสามารถสร้างได้โดยการนำคำจากรายการมาใช้โดยใช้วิธีเรียกซ้ำ (Recursive Approach) คุณสามารถนำคำได้เพียงคำเดียวในแต่ละครั้งจากทั้งสองรายการ
ดูสถานการณ์ Input-Output ต่างๆ
Input -
sentence[row][col] = {{"I", "You"}, {"Do", "do not like"}, {"walking", "eating"}}
Output** -
I Do walking I Do eating I like walking I like eating You Do walking You Do eating You like walking You like eating
คำอธิบาย - การนำคำหนึ่งคำจากแต่ละรายการใน sentence[0-2] จะได้ประโยคข้างต้น
Input -
sentence[row][col] = {{"work", "live"}, {"easy", "happily"}}
Output -
work easy work happily live easy live happily
คำอธิบาย - การนำคำหนึ่งคำจากแต่ละรายการใน sentence[0-1] จะได้ประโยคข้างต้น
วิธีการที่ใช้ในโปรแกรมด้านล่าง
ประกาศอาร์เรย์ 2 มิติแบบ string เป็น sentence[row][col] ส่งข้อมูลไปยังฟังก์ชัน Recursive_Print(sentence)
ภายในฟังก์ชัน Recursive_Print(sentence)
สร้างอาร์เรย์แบบ string เป็น arr[row]
เริ่มลูป FOR จาก i=0 ถึง i น้อยกว่า col ภายในลูป ตรวจสอบ IF sentence[0][i] ไม่ว่าง แล้วเรียกฟังก์ชัน Recursion(sentence, 0, i, arr)
ภายในฟังก์ชัน Recursion(string sentence[row][col], int temp_1, int temp_2, string arr[row])
ตั้งค่า arr[temp_1] = sentence[temp_1][temp_2]
ตรวจสอบ IF temp_1 เท่ากับ row-1 แล้วเริ่มลูป FOR จาก i=0 ถึง i น้อยกว่า row ภายในลูป พิมพ์ arr[i]
เริ่มลูป FOR จาก i=0 ถึง i น้อยกว่า col ภายในลูป ตรวจสอบ IF sentence[temp_1+1][i] ไม่เท่ากับ space แล้วเรียกฟังก์ชัน Recursion(sentence, temp_1+1, i, arr) แบบ Recursive
พิมพ์ผลลัพธ์
ตัวอย่างโค้ด
#include<bits/stdc++.h>
#define row 3
#define col 3
using namespace std;
void Recursion(string sentence[row][col], int temp_1, int temp_2, string arr[row]) {
arr[temp_1] = sentence[temp_1][temp_2];
if(temp_1 == row - 1) {
for(int i = 0; i < row; i++) {
cout << arr[i] << " ";
}
cout << endl;
return;
}
for(int i = 0; i < col; i++) {
if(sentence[temp_1+1][i] != "") {
Recursion(sentence, temp_1+1, i, arr);
}
}
}
void Recursive_Print(string sentence[row][col]) {
string arr[row];
for(int i = 0; i < col; i++) {
if(sentence[0][i] != "") {
Recursion(sentence, 0, i, arr);
}
}
}
int main() {
string sentence[row][col] = {{"Ajay", "sanjay"}, {"Like", "is"}, {"Reading", "eating"}};
Recursive_Print(sentence);
return 0;
}
ผลลัพธ์
หากเรารันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:
Ajay Like Reading Ajay Like eating Ajay is Reading Ajay is eating sanjay Like Reading sanjay Like eating sanjay is Reading sanjay is eating