بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
کمک در نوشتن الگوریتم
سلام دوستان
میخوام فانکشنی بنویسم که دو پارامتر داره: یک عدد و یک آرایه
میخوام هر عددی که بش بدم بم بگه مجموع چه اعدادی میشه پارامتر اول.
مثلا:
fun(6, [1, 2, 4, 5]);
// 1 + 5
// 4 + 2
+1
0
دوس عزیز کافیه یک حلقه for بذاری برای کل اندیس های آرایه سپس بیای هر کدوم از اندیس های آرایه رو از پارامتر اول کم کنی حالا کافیه ببینی نتیجه این تفزیق داخل آرایه ات هست یا نه(با یک حلقه for دیگه میتونی چک کنی) اگر بود اون اندیس و جواب تفریق رو ببر به خروجی و تمام مرتبش هم میشه o(n) :) (9 سال پیش)
0
0
اگر بخوایم مجموع سه عدد رو چک کنیم چطور؟ (9 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
121071
9 سال پیش
0
0
سلام.
این کد رو ببینید:
function test($var, $arr){
foreach($arr as $value){
$temp = $var - $value;
if(in_array($temp, $arr)){
$result[] = "$value, $temp";
}
}
return $result;
}
print_r(test(6, array(2, 1, 3, 5))); // result: [0]=> "1, 5" , [1]=> "3, 3" , [2]=> "5, 1" ;
اعدادِ داخل آرایه که جمعشون میشه پارامتر اول رو پیدا میکنه اما مشکل اینه با این الگوریتم اعداد تکراری رو هم میده بیرون. یعنی 1،5 و 5،1 رو هردوبار حساب میکنه. چطوری میشه کاری کرد که این اتفاق نیفته و مثلا 1و5 رو فقط یه بار شناسایی کنه؟
مشکلی که گفتم با کد زیر حل میشه. ولی پیشنهاد میکنم اول خودتون روی راه حل فکر کنید.
function test($var, $arr){
$result = array();
foreach($arr as $value){
$temp = $var - $value;
if($temp == $var / 2) continue;
if(in_array($temp, $arr)){
if(in_array("$temp, $value" , $result)) continue;
$result[] = "$value, $temp";
}
}
return $result;
} (9 سال پیش)
پاسخ به سوال
121071
9 سال پیش
0
0
مشکلی که گفتم با کد زیر حل میشه اما پیشنهاد میکنم اول خودتون روی راه حل فکر کنید:
function test($var, $arr){
$result = array();
foreach($arr as $value){
$temp = $var - $value;
if($temp == $var / 2) continue;
if(in_array($temp, $arr)){
if(in_array("$temp, $value" , $result)) continue;
$result[] = "$value, $temp";
}
}
return $result;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .