เราจะสร้างฟังก์ชั่นเรียกตัวเองชื่อว่า cutting_times ที่รับขนาดของด้านทั้งสามด้าน แล้วตอบจำนวนครั้งที่ตัดได้ ขั้นแรกหากทั้งสามด้านเป็นหนึ่ง เราจะตัดไม่ได้แล้ว เพราะฉะนั้นฟังก์ชั่นจะรีเทิร์นค่า 0
หากมีด้านที่ไม่เป็น 1 เราจะเลือกด้านที่ยาวที่สุดมาตัดครึ่ง ให้ทั้งสามด้านเป็น
สังเกตว่าค่าขนาดของวุ้นที่ใส่ในฟังก์ชั่นจะลดลงเรื่อย ๆ ทุกครั้งที่ฟังก์ชั่นเรียกตัวเอง และในที่สุดขนาดของวุ้นจะกลายเป็น
#include<bits/stdc++.h>
using namespace std;
int cutting_times (int * sizes) {
sort(sizes, sizes+3);
if (sizes[2] == 1) return 0;
sizes[2] = sizes[2] / 2;
return 1 + cutting_times(sizes);
}
int main () {
int sizes[3];
for (int i = 0; i < 3; i++) cin >> sizes[i];
cout << cutting_times(sizes);
return 0;
}