ได้รับ Array ที่เป็นตัวแทนของตัวเลข (แต่ละสมาชิกคือ 1 หลัก) บวก 1 ให้ตัวเลขนั้น (Increment) หลักสำคัญที่สุดอยู่ Index 0
วิธีบวก 1:
- เริ่มจากท้าย Array การบวกคือเพิ่มหลักสุดท้าย 4->5
- ถ้าหลักสุดท้ายเป็น 9 ทำให้เป็น 0 และ Carry = 1
- รอบถัดไปตรวจสอบ Carry หากบวกได้ 10 ทำเหมือนข้อ 2
- หลังบวก Carry แล้ว ตั้ง Carry = 0 สำหรับรอบต่อไป
- ถ้าการบวกทำให้ Array ขยาย ให้เติม 1 ไปข้างหน้า
เช่น Array [7, 6, 3, 4] แทน 7634 บวก 1 ได้ 7635 -> [7, 6, 3, 5]
ตัวอย่าง
Input: [7, 6, 9, 9] Output: [7, 7, 0, 0] Input: [4, 1, 7, 8, 9] Output: [4, 1, 7, 9, 0]
คำอธิบาย บวก 1 ตัวสุดท้าย หากน้อยกว่า 9 หากเป็น 9 ทำให้เป็น 0 และ Recursive ตัวก่อนหน้า
ตัวอย่าง
#include <iostream>
using namespace std;
void sum(int arr[], int n) {
int i = n;
if (arr[i] < 9) {
arr[i] = arr[i] + 1;
return;
}
arr[i] = 0;
i--;
sum(arr, i);
if (arr[0] > 0) {
cout << arr[0] << ", ";
}
for (int i = 1; i <= n; i++) {
cout << arr[i];
if (i < n) {
cout << ", ";
}
}
}
int main() {
int n = 4;
int arr[] = {4, 1, 7, 8, 9};
sum(arr, n);
return 0;
}