PDA

View Full Version : سوال: divide & conqur



moh.mon
سه شنبه 27 اسفند 1387, 21:11 عصر
سلام.
من میخوام یه کد بنویسم که max و min رو در یک آرایه حساب کنه ولی به روش تقسیم و حل و بازگشتی ولی نمیدونم چه جوری باید شروع کنم لطفا کمک کنید.

Salar Ashgi
چهارشنبه 28 اسفند 1387, 09:42 صبح
سلام ، روش اینطوری هستش که شما آرایه رو به دو قسمت تقسیم می کنید ، و بطور بازگشتی

Min , Max هریک از این دو قسمت رو پیدا می کنید و Min , Max کل میشه Min , Max این دو قسمت !!!

موفق و پیروز باشید !!!

moh.mon
چهارشنبه 28 اسفند 1387, 09:52 صبح
درسته منم تا این قسمتش رو میدونستم.
ولی حالا چه جوری میشه این تابع رو پیاده کرد؟

SamaPic
چهارشنبه 28 اسفند 1387, 14:41 عصر
با سلام.
آرایه را به روش بازگشتی مرتب کن.
عناصر اول و آخر موارد درخواستی میشوند.
خدانگهدار.

moh.mon
چهارشنبه 28 اسفند 1387, 19:14 عصر
من این کد رو با راهنمایی های دوستان نوشتم ولی نمیدونم مشکلش چیه؟
چون اجرا میشه ولی وسط کار erorr میده.
اینم سورسش:

void maxmin(int *max, int *min,int n)
{
if( n == 1)
*min = *max = a[0];
else if( n == 2)
{
if(a[0] < a[1])
{
*min = a[0];
*max = a[1];
}
else
{
*min = a[1];
*max = a[0];
}
}
else
{
maxmin(max,min,n/2);
maxmin(&max1,&min1,n - n/2);
if( min1 < *min)
*min = min1;
if( max1 > *max)
*max = max1;
}
}

moh.mon
پنج شنبه 29 اسفند 1387, 21:12 عصر
کسی نظری نداره.................

mortezamsp
پنج شنبه 06 فروردین 1388, 16:49 عصر
فکرکنم تو داخل تابع باید بجای *min بنویسی &min

درست نمیگم؟

shahin0
شنبه 19 اردیبهشت 1388, 03:05 صبح
از دوستان کسی می تونه در مورد کد بالا بیشتر توزیح بده این ارور وسط کار از چی ؟

shahin0
جمعه 25 اردیبهشت 1388, 02:35 صبح
کسی نیست یه توضیح در مورد این کد بده ؟

tdkhakpur
جمعه 25 اردیبهشت 1388, 05:31 صبح
سلام :
کد زیر رو امتحان کن امیدوارم مشکلت حل بشه.
موفق باشید.


#include <iostream.h>
void MinMax(int *Min, int *Max, int *a, int n)
{
if(--n>=0 ){
if( *Max < a[n] ) *Max = a[n];
if( *Min > a[n] ) *Min = a[n];
MinMax( Min, Max, a, n);
}
}
#define MaxNum 5
int main()
{
int max, min, a[MaxNum];
for(int i=0; i<MaxNum; i++)
cin>>a[i];
max = min = a[0];
MinMax( &min, &max, a, MaxNum);
cout<<"Max="<<max<<" Min="<<min;
return 0;
}