موضوع پروژه هم بايد يکی از مطالب درسی کتاب طراحی الگوريتم جعفرنژاد قومی باشه مثل مسئله n وزير،...
البته شبه کد نميخام،برنامه ميخوام
Printable View
موضوع پروژه هم بايد يکی از مطالب درسی کتاب طراحی الگوريتم جعفرنژاد قومی باشه مثل مسئله n وزير،...
البته شبه کد نميخام،برنامه ميخوام
bfs , dfs خوبه؟؟؟
اگر خبه آپ کنم براتون.
راستی کد هافمن و کوله پشتی رو هم دارم
کد هافمن رو اگه لطف کنيد ممنون ميشمنقل قول:
البته پروژه بايد توضيح هم داشته باشه
سلام.
فاطمه پست های بیهوده نده. اگه کد داری بذار. دیگه پرسیدن نداره.
سلام من نمی خواستم پست بیهوده بدم اینکه سوال کردم دلیلش این بود که حوصله اپ کردنش رو نداشتم می خواستم اگر بدرشون می خوره آپ کنمنقل قول:
اینم کد هافمن:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
با لیست پیوندی نوشته شده...
ممنون از شما , لطف کرديدنقل قول:
با سلام !
بنده کلیه حل تمرین های کتاب طراحی الگوریتم با شبه کد c++ رو خواستارم ؟
لطفا در اسرا وقت .
درود
اين وبلاگ يكي از هم كلاسي هامه
هر سرسي بخواين ميزاره...
کد:www.killsysttem32.blogfa.com
با سلامنقل قول:
دوست عزيز ديگه چي ميخواهي خود نيپوليتان رو بيارم پيشت :31:
دوست عزيز اين كار تقريبا نشدني ولي تا اونجا كه من از دستم بياد برنامه ها رو ميزارم
mehdy59 دوست عزيز اين وبلاگي كه دادين يه t اضافه نوشتي :31:و از شما هم ممنون به خاطر گذاشتن اين وبلاگ
در ضمن من خودم الگوريتم استراسن دارم كه براتون ميزارم
از فاطـمه دوستمون هم من تشكر ميكنم
دوستان زیادی الگوریتم کوله پشتی رو خواسته بودن، لینک رو اینجا می ذارم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جزوه طراحی الگوریتم با توضیحات کامل میخوام c++
یک جزوه طراحی الگوریتم که با توضیح کامل وtrace باشه میخوام
نقل قول:
لینک از کار افتاده.
لطفا دوباره آپلود کنید.
لینک که مشکلی ندارهنقل قول:
الان خودم دانلود کردم:20:
نقل قول:
اینم عکس از اینک تون:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جالب شد
کد رو میذارم براتون:
کد:#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void sortbypw(int p[],int w[],int n)
{
int i,t,j;
for (i=0;i<=n-1;i++)
for (j=i+1;j<=n;j++)
if(((float)p[i]/w[i])<((float)p[j]/w[j]))
{
t=p[i];
p[i]=p[j];
p[j]=t;
t=w[i];
w[i]=w[j];
w[j]=t;
}
}
float knapsack(int p[],int w[],int n,int m)
{
sortbypw(p,w,n);
int w1=m;
int i=0;
float pp=0;
while (i<=n && w1>0)
{
if (w[i]<w1)
{
cout<<" p : "<<p[i];
w1-=w[i];
pp+=p[i];
i++;
}
else
{
cout<<" p : "<<p[i];
pp+=w1*((float)p[i]/w[i]);
w1=0;
}
}
return pp;
}
void main()
{
int p[100]={6,12,7,18,9,30};
int w[100]={1,5,3,9,5,20};
clrscr();
cout<<"If You Want Input Data Press (Y) Else Press (N) :";
char ch=getche();
if (ch=='n')
cout<<"\n\n Arzesh Knapsack : "<<knapsack(p,w,5,20);
else
{
int n,m;
cout<<"\nEnter Weight Knapsack : ";
cin>>m;
cout<<"Enter Num : ";
cin>>n;
for (int i=0;i<n;i++)
{
cout<<"Enter Arzesh : ";
cin>>p[i];
cout<<"\nEnter Weight : ";
cin>>w[i];
gotoxy(20,wherey()-2);
cout<<" P/W Is : "<<(float)p[i]/w[i];
gotoxy(1,wherey()+2);
cout<<".......................................\n";
}
cout<<"\n\n Arzesh Knapsack : "<<knapsack(p,w,n-1,m);
}
getch();
}
اینم عکس من از لینک:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
عزیز لطفا دقت کنید.
من پست 6 شماره میگم نه پست 11
در این جور مواقع یه نقل قول کنید تا اشتباه نشهنقل قول:
اینم لینک جدید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نقل قول:
نقل قل رو هم تو پست 14 زده بودم.
سلام
کمکم کنین لطفا""
یه برنامه میخوام که ::
فرضا در یک مستطیل تعدادی نقطه به صورت تصادفی وجود داره
الگوریتمی طراحی کنید که بزرگترین دایره در بین نقاط این مستطیل جا میشه رو پیدا کنه بدون ایمکه هیچ نقطه ای در داخل دایره قرار بگیره
ممنونم میشم کمکم کنین
این در حد سوال المپیاده.
یه خرده فکر ریاضی می خواد.
اینو ببینید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خب مسلما باید بیشترین فاصله بین نقاط رو پیدا کنینقل قول:
یعنی باید فاصله یه نقطه رو با همه نقاط به دست بیاری
از فورمول: [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دایره رو می تونی جایی رسم کنی که کمترین فاصلش از بقیه نقاط بیشتر باشه
به طور مثال
اگه سه نقطه a,b,c داشته باشیم
اول فاصله a,b و a,c رو به دست میاری
بعد کمترین فاصله رو نگه می داری.
دفعه بعد فاصله b,a و b,c رو بدست میاری و کمترین فاصله رو نگه می داری
در مرحله بعد فاصله c,a و c,b رو بدست میاری و طبق روال کمترین فاصله رو نگه می داریم
در نهایت از بین فاصله هایی که بدست آوردیم بیشترینش رو پیدا می کنیم و اگر اون فاصله مربوط به a بود روی a رسم می کنیم و ...
البته این ایده من بود حتما راه های بهتری هم هست
ممکنه بگین تو کدوم المپیاد این سوال مطرح شد؟؟نقل قول:
آخه اینو استادمون از ما میخواد!!
مرسینقل قول:
خیلی کمکم کرد:10:
فقط گفتم در حد المپیاد. یعنی اگه بخوایم خوب روش کار کنیم کار راحتی نیست.نقل قول:
ممکنه بگین تو کدوم المپیاد این سوال مطرح شد؟؟
برنامه ای که یک ماتریس مجاورت را از ورودی خوانده و کمترین تعداد رنگ مورد نیاز برای رنگ آمیزی گراف متناظر با آن را در خروجی چاپ کند
مربوط به طراحی الگوریتمه واقعا دیگه ضروریه ممنون میشم کمکم کنین
سلاممیشه بیشتر توضضیح بدینواقعا متوجه نشدمتا اونجایی که من می دونم از هر ماتریس مجاورت فقط میشه یه شکل گراف کشید یعنی شکل به دست اومده یکتا میشهاشتباه می کنم؟نقل قول:
بی خیال امروز خواست که گفتم ننوشتم!! :دینقل قول:
مرسی که توجه داری.
اینو ببین میشه چی کارش کرد؟؟
برنامه ای که به صورت غیر بازگشتی مرتب سازی سریع را روی یک آرایه n عنصری انجام دهد
و این
برنامه ای که ماتریس مجاورت n*n را خوانده چک کند آیا میتوان این ماتریس را با n-2 رنگ رنگ آمیزی نمود؟؟ در نهایت گراف این ماتریس هم به شکل ساده ( گرافیکی نه ) رسم کنه...
خو برنامه اول که خیلی سادس ، روش های مختلفی واسه مرتب سازی وجود دارهنقل قول:
اینجا اکثر مرتب سازیا رو با الگوریتماش گفته(ویکی پدیا)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
به طور مثال
مرتب سازی حبابی:
که نتایجش به صورت زیره:کد:void bubble_sort (int arr [ ] , int n)
{
register int i , j , t , c;
(-- for (i = n - ۲ ; i >= ۰ ; i
{
c = ۰;
(++ for (j = ۰ ; j <= i ; j
if (arr [ j ] > arr [ j + ۱ ])
{
; ] t = arr [ j
arr [ j ] = arr [ j + ۱ ];
; arr [ j + ۱ ] = t
C++;
}
(if (c == ۰
; break
}
}
فرض کنید میخواهیم n داده به صورت صعودی مرتب شوند. عنصر اول را با با عنصر دوم مقایسه کرده، و در صورتی که عنصر اول بزرگتر باشد باشد جای عنصر اول و دوم را عوض میکنیم. همین کار را با عناصر دوم و سوم انجام میدهیم و همینطور عناصر سوم و چهارم ، الی آخر. وقتی این کار تمام شد بزرگترین عنصر بین دادهها به آخر لیست میرسد . حالا یک بار دیگر از اول این کار را انجام میدهیم اما این بار تا عنصر (n -۱)ام ادامه میدهیم (عنصر nام در مرحله اول در جای خودش قرار گرفته). باز هم این کار را تا عنصر (n - ۲)ام تکرار میکنیم ، و بازهم .... تا اینکه بالاخره دادهها مرتب میشوند. مثلا:
۰ - ۰) ۵ ۶ ۴ ۲
۱ - ۱) ۵ ۶ ۴ ۲
۱ - ۲) ۵ ۴ ۶ ۲
۱ - ۳) ۵ ۴ ۲ ۶
۲ - ۱) ۴ ۵ ۲ ۶
۲ - ۲) ۴ ۲ ۵ ۶
۳ - ۱) ۲ ۴ ۵ ۶
مرحله اول سه مقایسه ، مرحله دوم دو مقایسه و مرحله سوم یک مقایسه داره ، که روی هم میشوند شش مقایسه. در کل این روش n (n - ۱) / ۲ مقایسه لازم داره. اما نه همیشه. به مثال زیر توجه کنید:
۰ - ۰) ۰ ۷ ۱ ۳ ۵ ۴
۱ - ۱) ۰ ۱ ۷ ۳ ۵ ۴
۱ - ۲) ۰ ۱ ۷ ۳ ۵ ۴
۱ - ۳) ۰ ۱ ۳ ۷ ۵ ۴
۱ - ۴) ۰ ۱ ۳ ۵ ۷ ۴
۱ - ۵) ۰ ۱ ۳ ۵ ۴ ۷
۲ - ۱) ۰ ۱ ۳ ۵ ۴ ۷
۲ - ۲) ۰ ۱ ۳ ۵ ۴ ۷
۲ - ۳) ۰ ۱ ۳ ۵ ۴ ۷
۲ - ۴) ۰ ۱ ۳ ۴ ۵ ۷
۳ - ۱) ۰ ۱ ۳ ۴ ۵ ۷
۳ - ۲) ۰ ۱ ۳ ۴ ۵ ۷
۳ - ۳) ۰ ۱ ۳ ۴ ۵ ۷
۴ - ۱) ۰ ۱ ۳ ۴ ۵ ۷
۴ - ۲) ۰ ۱ ۳ ۴ ۵ ۷
۵ - ۱) ۰ ۱ ۳ ۴ ۵ ۷
همونطور که میبینید انتهای مرحله ۲ دادهها مرتب هستن. تشخیص این مساله هم کار سختی نیست: اگه به مرحلهای رسیدیم که هیچ جابجایی در اون رخ نداد نتیجه میشه که دادهها مرتب هستن (مرحله سوم). پس بعد از مرحله ۳ مطمئن میشیم که داده هامون مرتب شدن و نیازی به مراحل ۴ و ۵ نیست. پیاده سازی (مرتب سازی حبابی) در c++
مرتب سازی گزینشی:
توضیحکد:void selection_sort (int arr[] , int n)
{
register int i , j;
int max , temp;
for(i=n-1;i>0;i--)
}
max = ۰;
for (j = ۱ ; j <= i ; j++)
if (arr[ max ] < arr[ j])
max = j;
; ] temp = arr[ i
arr[ i ] = arr[ max];
arr[ max ] = temp;
}
}
معمولاً اطلاعات و دادههای خامی که در اختیار برنامه نویس قرار داره بصورت نامرتب هستن. مواقعی پیش مییاد که لازمه این دادهها بر حسب فیلد خاصی مرتب بشن؛ مثل لیست دانش آموزان بر حسب معدل ، لیست کارمندان بر حسب شماره پرسنلی ، لیست دفترچه تلفن بر حسب نام خانوادگی و ... روشهای متعددی برای مرتب سازی وجود داره که من قصد دارم تا حد امکان شما رو با این روشها آشنا کنم. برای شروع روش مرتب سازی انتخابی (Selection Sort) رو توضیح میدم.
روش انتخابی اولین روشیه که به ذهن میرسه: بزرگترین رکورد بین رکوردهای لیست رو پیدا میکنیم و به انتهای لیست انتقال میدیم. از بقیه رکوردها بزرگترین رو انتخاب میکنیم و انتهای لیست - کنار رکورد قبلی - قرار میدیم و ... مثلا:
۰: ۹ ۱ ۶ ۴ ۷ ۳ ۵
۱: ۵ ۱ ۶ ۴ ۷ ۳ ۹
۲: ۵ ۱ ۶ ۴ ۳ ۷ ۹
۳: ۵ ۱ ۳ ۴ ۶ ۷ ۹
۴: ۴ ۱ ۳ ۵ ۶ ۷ ۹
۵: ۳ ۱ ۴ ۵ ۶ ۷ ۹
۶: ۱ ۳ ۴ ۵ ۶ ۷ ۹
واسه سوال اولت تو همون ویکی پدیا بیشتر الگوریتما رو با توضیحش گفته، کافیه جست و جو کنی "مرتب سازی"
در مورد سوال دوم، باز رفت تو همون مقوله رنگ آمیزی که من درست متوجه منظورت نمی شم
شما می خوای هر ضلع رو با یه رنگ رنگ کنی؟
کلا شرایط رنگ آمیزی رو نگفتی
ممنونمنقل قول:
ولی غیر بازگشتیش نیستا...
بازگشتی نیستن اینا؟؟
تو سوال گفته به صورت غیر بازگشتی...
رنگ آمیزی گراف هم مثلا نقشه زیر رو در نظر بگیر
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
میخواییم با 3 تا رنگ اینو رنگ آمیزی کنیم جوری که مناطق مجاور هم هم رنگ نباشن...
1 با 2 مجاوره
2 با 3 مجاوره
1 با 3 هم مجاوره
1 با 4 مجاوره
2 با 1 و 3 مجاوره ولی با 4 نیست
4 هم با 1 مجاوره و با 2 و 3 نیست
ok?
نه دیگه اینا کجاش بازگشتیه؟!نقل قول:
ممنونم
ولی غیر بازگشتیش نیستا...
بازگشتی نیستن اینا؟؟
تو سوال گفته به صورت غیر بازگشتی...
تابع وقتی بازگشتیه که توی خودش خودش رو فراخوانی کرده باشیم مثل:
کد:int fact(int n)
{ if (n==1)
return 1;
else return n*fact(n-1)
}
ببین ماتریس مجاورت تا جایی که من می دونم این جوری بود
اگر سه راس a,b,c رو داشته باشیم و بخوایم واسه گرافی که این سه راس با هم دارن یه ماتریس مجاورت بنویسیم
این ماتریس نشون می ده که a,b با هم رابطه ای ندارند وکد:,,,a|b|c
a|0|0|1
b|0|0|1
c|1|1|0
b,c با هم ارتباط دارن
a,c هم با هم ارتباط دارن
تعریف تو هم از ماتریس مجاورت همینه؟
دقیقا همینه
خب پس اینکه شما کشیدی یه گرافه که با ماتریسه مجاورت از ورودی خونده میشهنقل قول:
درسته؟!
خب منم همینو گفتم دیگه
یه گراف که با ماتریس مجاورت کشیده بشه و تست بشه که آیا میشه با n-2 رنگ رنگ امیزی بشه یا نه البته این کد رو ببین
گفت رو همین کد تغییراتشو انجام بدین::
کد:#include<iostream.h>
#include<conio.h>
int w[4][4]={0,1,1,1
,1,0,0,1
,1,0,0,1
,1,1,1,0};
int vcolor[4];
int n=4;
int m=3;
int promising(int i)
{
int j;
int switc=1;
j=0;
while(j<i && switc)
{
if (w[i][j] && vcolor[i]==vcolor[j])
switc=0;
j++;
}
return switc;
}
void m_coloring(int i)
{
int color;
if(promising(i))
if(i+1==n)
{
for(int c=0;c<n;c++)
cout<<" "<<vcolor[c];
cout<<"\n";
getch();
}
else
for(color=1;color<=m;color++)
{
vcolor[i+1]=color;
m_coloring(i+1);
}
}
int main()
{
clrscr();
m_coloring(-1);
getch();
return 0;
}
چطور شد؟؟؟؟!نقل قول:
خب پس اینکه شما کشیدی یه گرافه که با ماتریسه مجاورت از ورودی خونده میشه
درسته؟!
سلامنقل قول:
برنامه ای که شما می خواین برنامه وقت گیریه
من اون رو آماده ندارم
و متاسفانه الان اصلا وقت نوشتنش رو ندارم:41:
یک نفر باید پیدا شه پروژه های من رو بنویسه:31: