मैं एक बौद्धिक व्यायाम के रूप में सशर्त छलांग खत्म करना चाहते। मैं हालांकि पता नहीं है इस प्रदर्शन पर किसी भी औसत दर्जे का प्रभाव पड़ता है या नहीं :)
#include <iostream>
#include <limits>
inline int max(int a, int b)
{
int difference = a - b;
int b_greater = difference >> std::numeric_limits<int>::digits;
return a - (difference & b_greater);
}
int max(int a, int b, int c)
{
return max(max(a, b), c);
}
int main()
{
std::cout << max(1, 2, 3) << std::endl;
std::cout << max(1, 3, 2) << std::endl;
std::cout << max(2, 1, 3) << std::endl;
std::cout << max(2, 3, 1) << std::endl;
std::cout << max(3, 1, 2) << std::endl;
std::cout << max(3, 2, 1) << std::endl;
}
इस बिट twiddling सिर्फ मनोरंजन के लिए है, cmov
समाधान शायद एक बहुत तेजी से होता है।
यह होमवर्क है? –
क्या आप इसका उपयोग कर सकते हैं? http://www.cplusplus.com/reference/algorithm/max/ – alex
इस मामले में यदि यह होमवर्क है, तो यह ठीक है, क्योंकि प्रश्नकर्ता ने प्रयास किया है, उसका कोड दिखाया है और सुधार की मांग कर रहा है। यह SO पर होमवर्क प्रश्न पोस्ट करने के लिए सभी दिशानिर्देशों को पूरा करता है। – Jasarien