สมมติว่าเรามีตัวเลขสามตัว x, y และ z ในเว็บไซต์รีวิวมี x คนที่โหวตให้ y คนที่จะโหวตไม่ลง และอีกกลุ่มของ z ที่จะโหวต แต่เราไม่รู้ว่าพวกเขาจะโหวตขึ้นหรือลงหรือไม่ แต่ละคนสามารถโหวตได้มากที่สุดครั้งเดียว ถ้ามีคนโหวตมากกว่าโหวตลง ผลลัพธ์จะเป็น "+"; หากจำนวน downvote มากกว่า ผลลัพธ์จะเป็น "-"; มิฉะนั้นผลลัพธ์จะเป็น "0" เนื่องจากบุคคลที่ไม่รู้จัก z ผลลัพธ์อาจไม่แน่นอน (กล่าวคือ มีผลลัพธ์ที่เป็นไปได้มากกว่าหนึ่งรายการ) ผลลัพธ์มีความไม่แน่นอน (แสดงเป็น '?') ถ้าหากว่ามีสองสถานการณ์ที่แตกต่างกันของการลงคะแนนเสียงของ zpersons เราต้องไปหาผลหรือรายงานมาว่าไม่แน่นอน
ดังนั้น ถ้าอินพุตเป็น x =2; y =0; z =2 ผลลัพธ์จะเป็น '?' เพราะมีผู้โหวตเห็นด้วย 2 คน หากโหวตอีก 2 คะแนนลดลงก็จะเป็น 0 แต่ถ้าคะแนนสูงจะเป็น '+' คำตอบจึงไม่แน่นอน
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
if x > y + z, then: return "+" otherwise when x + z < y, then: return "-" otherwise when not z is non-zero, then: return "0" Otherwise return "?"
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; string solve(int x, int y, int z){ if (x > y + z) return "+"; else if (x + z < y) return "-"; else if (!z) return "0"; else return "?"; } int main(){ int x = 2; int y = 0; int z = 2; cout << solve(x, y, z) << endl; }
อินพุต
2, 0, 2
ผลลัพธ์
?