ورود

نسخه کامل مشاهده نسخه کامل : کمک می خوام....یه برنامه به زبان C++



momal
27-04-2008, 16:13
دوستان سلام
به کمکتون نیاز دارم
من دانشجوی کامپیوترم و استادمون یه پروژه داده که باید زود تر آمادش کنم.
الان دقیقا یک هفتس که دارم روش فکر میکنم اما راهی براش پیدا نکردم،دیگه فکرم به جایی قد نمیده.
خواهش میکنم اگه امکان داره کمکم کنید.

و اما پروژه یه برنامه به زبان C++ برنامه باید تمام زیر مجموعه های mعضوی از یک مجموعه ی nعضوی رو چاپ کنه
n,m رو کاربر میده
مجموعه nعبارت است از:{1,2,3,4,5,6…n}
تکرار در زیر مجموعه ها مجاز نیست.یعنی:{1,2,3},{2,1,3}یکی هستند.

ممنون میشم اگه کمکم بکنید.

momal
27-04-2008, 16:14
فقط تورو خدا زود تر

momal
28-04-2008, 20:52
دوستان یعنی کسی نیست که بتونه به من کمک کنه؟

momal
30-04-2008, 18:38
دوستان نا امیدم نکنیدمن هنوز راهی برای حل این مساله پیدا نکردم.

momal
30-04-2008, 18:40
بابا شما هها که اکثرا برنامه نویس حرفه ای هستید.نگید که نمی تونید این برنامه رو بنویسید.

momal
30-04-2008, 18:41
خواهش میکنم یکمی روش فکر کنید .من که دیگه مغزم ترکید!!!

mohamadpk
01-05-2008, 06:54
تو به من یه کم ریاضی یاد بده منم برات برنامتو مینویسم آخه یعنی چی mعضوی nعضوی من که نفهمیدم:10:

momal
03-05-2008, 10:44
آقا ممنون.
ببین m,n دوتا متغیر هستند که توسط کاربر مقدار دهی میشن و هر مقداری رو میتونن بگیرن.فقط m<n باید برقرار باشه.

مثلا کاربر مقدار 10 رو به n و مقدار 3 رو به M میده. اون وقط مجموعه ی اصلی میشه:
{1,2,3,4,5,6,7,8,9,10}
و زیر مجموعه ها که خروجی مطلوب ما هستند عبارتند از:

123 124 125 126 127 128 129 1210
134 135 136 137 138 139 1310
135 146 147 148 149 1410
156 157 158 159 1510
167 168 169 1610
178 179 1710
189 1810
1910
234 235 236 237 238 239 2310
245 246 247 248 249 2410
256 257 258 259 2510
267 268 269 2610
278 279 2710
289 2810
2910
345 346 347 348 349 3410
356 357 358 359 3510
367 368 369 3610
378 379 3710
389 3810
3910

456 457 458 459 4510
467 468 469 4610
478 479 4710
489 4810
4910
567 568 569 5610
578 579 5710
589 5810
5910
678 679 6710
689 6810
6910
789 7810
7910
8910

momal
03-05-2008, 10:48
راستی اینم اضافه کنم که منظورم از اعداد بالا مثلا 8910 این مجموعه است:{8,9,10}

momal
04-05-2008, 10:58
من طی آخرین تماسی که با استادم داشتم گفت که این یکی از پیچیده ترین الگوریتم ها ست.
پس هر کی فکر میکنه برنامه نویس رو در حد حرفه ای بلده اگه راست میگه این مساله رو حل کنه!!!

m.vazir3010i
04-05-2008, 14:41
نیم ساعت طول کشید نوشتنش:


#include "stdio.h"
#include "conio.h"
#include "malloc.h"
#include "memory.h"
int f(int k);
int *M,m,n;
int main(void){
printf("Enter n:");
scanf_s("%d",&n);
printf("Enter m:");
scanf_s("%d",&m);
if(m<2 || m>n){
return 0;
}
M=(int *)malloc(m*sizeof(int));
memset(M,0,m*sizeof(int));
f(1);
_getch();
return 0;
}
int f(int k){
int i=0,j=0;
if(k==m){
for(i=M[1]+1;i<=n;i++){
M[k-1]=i;
printf("(");
for(j=0;j<m;j++){
printf("%d ",M[j]);
}
printf(")");
}
}
else{
for(i=M[0]+1;i<=n;i++){
M[k-1]=i;
f(k+1);
printf("\n");
}
}
return 0;
}

momal
05-05-2008, 14:22
اقا ممنون که زحمت کشیدی....
بلاره یه آدم با معرفت پیدا شد که کمک کنه...

فقط یه چیزی:
این برنامه فقط وقتی M=3باشه درست کار میکنه:
این خروجی برنامه به ازای m=4
Enter n:9
Enter m:4
(1 2 2 3 )(1 2 2 4 )(1 2 2 5 )(1 2 2 6 )(1 2 2 7 )(1 2 2 8 )(1 2 2 9 )
(1 2 3 3 )(1 2 3 4 )(1 2 3 5 )(1 2 3 6 )(1 2 3 7 )(1 2 3 8 )(1 2 3 9 )
(1 2 4 3 )(1 2 4 4 )(1 2 4 5 )(1 2 4 6 )(1 2 4 7 )(1 2 4 8 )(1 2 4 9 )
(1 2 5 3 )(1 2 5 4 )(1 2 5 5 )(1 2 5 6 )(1 2 5 7 )(1 2 5 8 )(1 2 5 9 )
(1 2 6 3 )(1 2 6 4 )(1 2 6 5 )(1 2 6 6 )(1 2 6 7 )(1 2 6 8 )(1 2 6 9 )
(1 2 7 3 )(1 2 7 4 )(1 2 7 5 )(1 2 7 6 )(1 2 7 7 )(1 2 7 8 )(1 2 7 9 )
(1 2 8 3 )(1 2 8 4 )(1 2 8 5 )(1 2 8 6 )(1 2 8 7 )(1 2 8 8 )(1 2 8 9 )
(1 2 9 3 )(1 2 9 4 )(1 2 9 5 )(1 2 9 6 )(1 2 9 7 )(1 2 9 8 )(1 2 9 9 )
(1 3 2 4 )(1 3 2 5 )(1 3 2 6 )(1 3 2 7 )(1 3 2 8 )(1 3 2 9 )
(1 3 3 4 )(1 3 3 5 )(1 3 3 6 )(1 3 3 7 )(1 3 3 8 )(1 3 3 9 )
(1 3 4 4 )(1 3 4 5 )(1 3 4 6 )(1 3 4 7 )(1 3 4 8 )(1 3 4 9 )
(1 3 5 4 )(1 3 5 5 )(1 3 5 6 )(1 3 5 7 )(1 3 5 8 )(1 3 5 9 )
(1 3 6 4 )(1 3 6 5 )(1 3 6 6 )(1 3 6 7 )(1 3 6 8 )(1 3 6 9 )
(1 3 7 4 )(1 3 7 5 )(1 3 7 6 )(1 3 7 7 )(1 3 7 8 )(1 3 7 9 )
(1 3 8 4 )(1 3 8 5 )(1 3 8 6 )(1 3 8 7 )(1 3 8 8 )(1 3 8 9 )
(1 3 9 4 )(1 3 9 5 )(1 3 9 6 )(1 3 9 7 )(1 3 9 8 )(1 3 9 9 )
(1 4 2 5 )(1 4 2 6 )(1 4 2 7 )(1 4 2 8 )(1 4 2 9 )
(1 4 3 5 )(1 4 3 6 )(1 4 3 7 )(1 4 3 8 )(1 4 3 9 )
(1 4 4 5 )(1 4 4 6 )(1 4 4 7 )(1 4 4 8 )(1 4 4 9 )
(1 4 5 5 )(1 4 5 6 )(1 4 5 7 )(1 4 5 8 )(1 4 5 9 )
(1 4 6 5 )(1 4 6 6 )(1 4 6 7 )(1 4 6 8 )(1 4 6 9 )
(1 4 7 5 )(1 4 7 6 )(1 4 7 7 )(1 4 7 8 )(1 4 7 9 )
(1 4 8 5 )(1 4 8 6 )(1 4 8 7 )(1 4 8 8 )(1 4 8 9 )
(1 4 9 5 )(1 4 9 6 )(1 4 9 7 )(1 4 9 8 )(1 4 9 9 )
(1 5 2 6 )(1 5 2 7 )(1 5 2 8 )(1 5 2 9 )
(1 5 3 6 )(1 5 3 7 )(1 5 3 8 )(1 5 3 9 )
(1 5 4 6 )(1 5 4 7 )(1 5 4 8 )(1 5 4 9 )
(1 5 5 6 )(1 5 5 7 )(1 5 5 8 )(1 5 5 9 )
(1 5 6 6 )(1 5 6 7 )(1 5 6 8 )(1 5 6 9 )
(1 5 7 6 )(1 5 7 7 )(1 5 7 8 )(1 5 7 9 )
(1 5 8 6 )(1 5 8 7 )(1 5 8 8 )(1 5 8 9 )
(1 5 9 6 )(1 5 9 7 )(1 5 9 8 )(1 5 9 9 )
(1 6 2 7 )(1 6 2 8 )(1 6 2 9 )
(1 6 3 7 )(1 6 3 8 )(1 6 3 9 )
(1 6 4 7 )(1 6 4 8 )(1 6 4 9 )
(1 6 5 7 )(1 6 5 8 )(1 6 5 9 )
(1 6 6 7 )(1 6 6 8 )(1 6 6 9 )
(1 6 7 7 )(1 6 7 8 )(1 6 7 9 )
(1 6 8 7 )(1 6 8 8 )(1 6 8 9 )
(1 6 9 7 )(1 6 9 8 )(1 6 9 9 )
(1 7 2 8 )(1 7 2 9 )
(1 7 3 8 )(1 7 3 9 )
(1 7 4 8 )(1 7 4 9 )
(1 7 5 8 )(1 7 5 9 )
(1 7 6 8 )(1 7 6 9 )
(1 7 7 8 )(1 7 7 9 )
(1 7 8 8 )(1 7 8 9 )
(1 7 9 8 )(1 7 9 9 )
(1 8 2 9 )
(1 8 3 9 )
(1 8 4 9 )
(1 8 5 9 )
(1 8 6 9 )
(1 8 7 9 )
(1 8 8 9 )
(1 8 9 9 )





(2 3 3 4 )(2 3 3 5 )(2 3 3 6 )(2 3 3 7 )(2 3 3 8 )(2 3 3 9 )
(2 3 4 4 )(2 3 4 5 )(2 3 4 6 )(2 3 4 7 )(2 3 4 8 )(2 3 4 9 )
(2 3 5 4 )(2 3 5 5 )(2 3 5 6 )(2 3 5 7 )(2 3 5 8 )(2 3 5 9 )
(2 3 6 4 )(2 3 6 5 )(2 3 6 6 )(2 3 6 7 )(2 3 6 8 )(2 3 6 9 )
(2 3 7 4 )(2 3 7 5 )(2 3 7 6 )(2 3 7 7 )(2 3 7 8 )(2 3 7 9 )
(2 3 8 4 )(2 3 8 5 )(2 3 8 6 )(2 3 8 7 )(2 3 8 8 )(2 3 8 9 )
(2 3 9 4 )(2 3 9 5 )(2 3 9 6 )(2 3 9 7 )(2 3 9 8 )(2 3 9 9 )
(2 4 3 5 )(2 4 3 6 )(2 4 3 7 )(2 4 3 8 )(2 4 3 9 )
(2 4 4 5 )(2 4 4 6 )(2 4 4 7 )(2 4 4 8 )(2 4 4 9 )
(2 4 5 5 )(2 4 5 6 )(2 4 5 7 )(2 4 5 8 )(2 4 5 9 )
(2 4 6 5 )(2 4 6 6 )(2 4 6 7 )(2 4 6 8 )(2 4 6 9 )
(2 4 7 5 )(2 4 7 6 )(2 4 7 7 )(2 4 7 8 )(2 4 7 9 )
(2 4 8 5 )(2 4 8 6 )(2 4 8 7 )(2 4 8 8 )(2 4 8 9 )
(2 4 9 5 )(2 4 9 6 )(2 4 9 7 )(2 4 9 8 )(2 4 9 9 )
(2 5 3 6 )(2 5 3 7 )(2 5 3 8 )(2 5 3 9 )
(2 5 4 6 )(2 5 4 7 )(2 5 4 8 )(2 5 4 9 )
(2 5 5 6 )(2 5 5 7 )(2 5 5 8 )(2 5 5 9 )
(2 5 6 6 )(2 5 6 7 )(2 5 6 8 )(2 5 6 9 )
(2 5 7 6 )(2 5 7 7 )(2 5 7 8 )(2 5 7 9 )
(2 5 8 6 )(2 5 8 7 )(2 5 8 8 )(2 5 8 9 )
(2 5 9 6 )(2 5 9 7 )(2 5 9 8 )(2 5 9 9 )
(2 6 3 7 )(2 6 3 8 )(2 6 3 9 )
(2 6 4 7 )(2 6 4 8 )(2 6 4 9 )
(2 6 5 7 )(2 6 5 8 )(2 6 5 9 )
(2 6 6 7 )(2 6 6 8 )(2 6 6 9 )
(2 6 7 7 )(2 6 7 8 )(2 6 7 9 )
(2 6 8 7 )(2 6 8 8 )(2 6 8 9 )
(2 6 9 7 )(2 6 9 8 )(2 6 9 9 )
(2 7 3 8 )(2 7 3 9 )
(2 7 4 8 )(2 7 4 9 )
(2 7 5 8 )(2 7 5 9 )
(2 7 6 8 )(2 7 6 9 )
(2 7 7 8 )(2 7 7 9 )
(2 7 8 8 )(2 7 8 9 )
(2 7 9 8 )(2 7 9 9 )
(2 8 3 9 )
(2 8 4 9 )
(2 8 5 9 )
(2 8 6 9 )
(2 8 7 9 )
(2 8 8 9 )
(2 8 9 9 )





(3 4 4 5 )(3 4 4 6 )(3 4 4 7 )(3 4 4 8 )(3 4 4 9 )
(3 4 5 5 )(3 4 5 6 )(3 4 5 7 )(3 4 5 8 )(3 4 5 9 )
(3 4 6 5 )(3 4 6 6 )(3 4 6 7 )(3 4 6 8 )(3 4 6 9 )
(3 4 7 5 )(3 4 7 6 )(3 4 7 7 )(3 4 7 8 )(3 4 7 9 )
(3 4 8 5 )(3 4 8 6 )(3 4 8 7 )(3 4 8 8 )(3 4 8 9 )
(3 4 9 5 )(3 4 9 6 )(3 4 9 7 )(3 4 9 8 )(3 4 9 9 )
(3 5 4 6 )(3 5 4 7 )(3 5 4 8 )(3 5 4 9 )
(3 5 5 6 )(3 5 5 7 )(3 5 5 8 )(3 5 5 9 )
(3 5 6 6 )(3 5 6 7 )(3 5 6 8 )(3 5 6 9 )
(3 5 7 6 )(3 5 7 7 )(3 5 7 8 )(3 5 7 9 )
(3 5 8 6 )(3 5 8 7 )(3 5 8 8 )(3 5 8 9 )
(3 5 9 6 )(3 5 9 7 )(3 5 9 8 )(3 5 9 9 )
(3 6 4 7 )(3 6 4 8 )(3 6 4 9 )
(3 6 5 7 )(3 6 5 8 )(3 6 5 9 )
(3 6 6 7 )(3 6 6 8 )(3 6 6 9 )
(3 6 7 7 )(3 6 7 8 )(3 6 7 9 )
(3 6 8 7 )(3 6 8 8 )(3 6 8 9 )
(3 6 9 7 )(3 6 9 8 )(3 6 9 9 )
(3 7 4 8 )(3 7 4 9 )
(3 7 5 8 )(3 7 5 9 )
(3 7 6 8 )(3 7 6 9 )
(3 7 7 8 )(3 7 7 9 )
(3 7 8 8 )(3 7 8 9 )
(3 7 9 8 )(3 7 9 9 )
(3 8 4 9 )
(3 8 5 9 )
(3 8 6 9 )
(3 8 7 9 )
(3 8 8 9 )
(3 8 9 9 )




(4 5 5 6 )(4 5 5 7 )(4 5 5 8 )(4 5 5 9 )
(4 5 6 6 )(4 5 6 7 )(4 5 6 8 )(4 5 6 9 )
(4 5 7 6 )(4 5 7 7 )(4 5 7 8 )(4 5 7 9 )
(4 5 8 6 )(4 5 8 7 )(4 5 8 8 )(4 5 8 9 )
(4 5 9 6 )(4 5 9 7 )(4 5 9 8 )(4 5 9 9 )
(4 6 5 7 )(4 6 5 8 )(4 6 5 9 )
(4 6 6 7 )(4 6 6 8 )(4 6 6 9 )
(4 6 7 7 )(4 6 7 8 )(4 6 7 9 )
(4 6 8 7 )(4 6 8 8 )(4 6 8 9 )
(4 6 9 7 )(4 6 9 8 )(4 6 9 9 )
(4 7 5 8 )(4 7 5 9 )
(4 7 6 8 )(4 7 6 9 )
(4 7 7 8 )(4 7 7 9 )
(4 7 8 8 )(4 7 8 9 )
(4 7 9 8 )(4 7 9 9 )
(4 8 5 9 )
(4 8 6 9 )
(4 8 7 9 )
(4 8 8 9 )
(4 8 9 9 )




(5 6 6 7 )(5 6 6 8 )(5 6 6 9 )
(5 6 7 7 )(5 6 7 8 )(5 6 7 9 )
(5 6 8 7 )(5 6 8 8 )(5 6 8 9 )
(5 6 9 7 )(5 6 9 8 )(5 6 9 9 )
(5 7 6 8 )(5 7 6 9 )
(5 7 7 8 )(5 7 7 9 )
(5 7 8 8 )(5 7 8 9 )
(5 7 9 8 )(5 7 9 9 )
(5 8 6 9 )
(5 8 7 9 )
(5 8 8 9 )
(5 8 9 9 )



(6 7 7 8 )(6 7 7 9 )
(6 7 8 8 )(6 7 8 9 )
(6 7 9 8 )(6 7 9 9 )
(6 8 7 9 )
(6 8 8 9 )
(6 8 9 9 )



(7 8 8 9 )
(7 8 9 9 )

momal
05-05-2008, 14:26
همونطور که میبینی تو مجموعه ها تکرار وجود داره.
من که نتونستم از سورسی که نوشتی سر در بیارم.

اگه میشه لطف کن و بیبن میتونی درستش کنی ...

بازم ممنون که زحمت کشیدی.

momal
06-05-2008, 11:59
آقا چی شد؟
من که دیگه فکرم جایی قد نمیده، امیدم به شماهاست.

تنهام نگذارید.......................

m.vazir3010i
06-05-2008, 15:05
میشه تکرار اشو برام مشخص کنی!

dogtag
07-05-2008, 16:14
من فکر کنم 1 روش داشته باشم
تا امشب می نویسمش

momal
07-05-2008, 22:31
آقا ممنون.طی آخرین تماسم با استاد،گفت این برنامه بر خلاف ظاهر سادش خیلی پیچیدس.Dogtag جان امید وارم بتونی بنویسیش...اگه نوشتی باید بهت تبریک بگم....

momal
07-05-2008, 22:36
میشه تکرار اشو برام مشخص کنی!

M.vazir3010i عزیز تکرار ها در خروجی کاملا مشخصه.نمونش:


(6 7 7 8 )(6 7 7 9 )
(6 7 8 8 )(6 7 8 9 )
(6 7 9 8 )(6 7 9 9 )
(6 8 7 9 )
(6 8 8 9 )
(6 8 9 9 )



(7 8 8 9 )
(7 8 9 9 )

تو مجموعه ها عضو تکراری نباید وجود داشته باشه.یعنی(9987) در واقع یه مجموعه ی 3 عضویه:(987).
متوجه شدی؟

dogtag
07-05-2008, 22:58
شرمنده اتم
الان نزدیک امتحانات پیش 2 شده و بابام تصمیم گرفته که کامپیوتر رو محدود کنه
هر وقت که وقت کنم برات می نویسمش (یعنی سعی می کنم)

BioHazard
08-05-2008, 14:54
تست نکردم ولی این چیزی که سریع به ذهنم رسید رو میگم
من بجات بودم این کارو میکردم
یک هش تعریف میکردم
بعد کاربر n m رو تعریف میکنه
بعد یک if ساده و در نهایت ساخته شدن مجموعه
اگه تکرار منظورت اینه که تو مجموعه رخ نده
(البته اینی که گفتم تحت پرل هست ، پرل هم جزو زبان های خانواده سی هست)

momal
09-05-2008, 21:36
تست نکردم ولی این چیزی که سریع به ذهنم رسید رو میگم
من بجات بودم این کارو میکردم
یک هش تعریف میکردم
بعد کاربر n m رو تعریف میکنه
بعد یک if ساده و در نهایت ساخته شدن مجموعه
اگه تکرار منظورت اینه که تو مجموعه رخ نده
(البته اینی که گفتم تحت پرل هست ، پرل هم جزو زبان های خانواده سی هست)


من که چیزی نفهمیدم چون پررل اصلا بلد نیستم....
دیگه دارم خسته می شم از بس رو این موضوع فکر کردم ....

اونقدر سخته که همه ی کسایی که ادعای برنامه نویس بودن رو داشتن کم آوردن.....
فکر میکنم به قول استادمون ما ها بهتره بریم کشکمون رو بسابیم[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دیگه نمیدونم چی کار کنم...[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

dogtag
09-05-2008, 22:34
ببین من تقریباً برای زبون خودم (php) نوشتمش ولی برای تبدیلش به ++c جداً وقت ندارم (شب امتحان فیزیکه!)
البته هنوز Php ش رو هم تست نکردم ولی ایشالا به زودی بهت می دمش

dogtag
10-05-2008, 17:33
کد رو برات نوشتم
برو حال کن:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برو ببین تو دانشگاه چجوری تحویلت می گیرن
فقط آخرش به من هم یه آمار بده ببینم چقدر کارم درسته

momal
13-05-2008, 21:56
آقا ممنونم از محبتت....
خیلی زحمت کشیدی با اینکه سرت شلوغه ولی لطف کردی و برام نوشتی.

ولی متاسفانه این سورسی که نوشتی نتیجه درست نمیده...
یعنی داخل مجموعه های خروجی تکرار هست.
من خودمم تا این حد می نویسم ولی هر کاری میکنم تکرار ها رو نمی تونم حذف کنم

ببین چند تاشو مشخص کردم.


Enter n:8
Enter m:4
{1, 1, 1, 1} {1, 1, 1, 2} {1, 1, 1, 3} {1, 1, 1, 4} {1, 1, 1, 5} {1, 1, 1, 6} {1
, 1, 1, 7} {1, 1, 1, 8} {1, 1, 2, 2} {1, 1, 2, 3} {1, 1, 2, 4} {1, 1, 2, 5} {1,
1, 2, 6} {1, 1, 2, 7} {1, 1, 2, 8} {1, 1, 3, 3} {1, 1, 3, 4} {1, 1, 3, 5} {1, 1,
3, 6} {1, 1, 3, 7} {1, 1, 3, 8} {1, 1, 4, 4} {1, 1, 4, 5} {1, 1, 4, 6} {1, 1, 4
, 7} {1, 1, 4, 8} {1, 1, 5, 5} {1, 1, 5, 6} {1, 1, 5, 7} {1, 1, 5, 8} {1, 1, 6,
6} {1, 1, 6, 7} {1, 1, 6, 8} {1, 1, 7, 7} {1, 1, 7, 8} {1, 1, 8, 8} {1, 2, 2, 2}
{1, 2, 2, 3} {1, 2, 2, 4} {1, 2, 2, 5} {1, 2, 2, 6} {1, 2, 2, 7} {1, 2, 2, 8} {
1, 2, 3, 3} {1, 2, 3, 4} {1, 2, 3, 5} {1, 2, 3, 6} {1, 2, 3, 7} {1, 2, 3, 8} {1,
2, 4, 4} {1, 2, 4, 5} {1, 2, 4, 6} {1, 2, 4, 7} {1, 2, 4, 8} {1, 2, 5, 5} {1, 2
, 5, 6} {1, 2, 5, 7} {1, 2, 5, 8} {1, 2, 6, 6} {1, 2, 6, 7} {1, 2, 6, 8} {1, 2,
7, 7} {1, 2, 7, 8} {1, 2, 8, 8} {1, 3, 3, 3} {1, 3, 3, 4} {1, 3, 3, 5} {1, 3, 3,
6} {1, 3, 3, 7} {1, 3, 3, 8} {1, 3, 4, 4} {1, 3, 4, 5} {1, 3, 4, 6} {1, 3, 4, 7
} {1, 3, 4, 8} {1, 3, 5, 5} {1, 3, 5, 6} {1, 3, 5, 7} {1, 3, 5, 8} {1, 3, 6, 6}
{1, 3, 6, 7} {1, 3, 6, 8} {1, 3, 7, 7} {1, 3, 7, 8} {1, 3, 8, 8} {1, 4, 4, 4} {1
, 4, 4, 5} {1, 4, 4, 6} {1, 4, 4, 7} {1, 4, 4, 8} {1, 4, 5, 5} {1, 4, 5, 6} {1,
4, 5, 7} {1, 4, 5, 8} {1, 4, 6, 6} {1, 4, 6, 7} {1, 4, 6, 8} {1, 4, 7, 7} {1, 4,
7, 8} {1, 4, 8, 8} {1, 5, 5, 5} {1, 5, 5, 6} {1, 5, 5, 7} {1, 5, 5, 8} {1, 5, 6
, 6} {1, 5, 6, 7} {1, 5, 6, 8} {1, 5, 7, 7} {1, 5, 7, 8} {1, 5, 8, 8} {1, 6, 6,
6} {1, 6, 6, 7} {1, 6, 6, 8} {1, 6, 7, 7} {1, 6, 7, 8} {1, 6, 8, 8} {1, 7, 7, 7}
{1, 7, 7, 8} {1, 7, 8, 8} {1, 8, 8, 8} {2, 2, 2, 2} {2, 2, 2, 3} {2, 2, 2, 4} {
2, 2, 2, 5} {2, 2, 2, 6} {2, 2, 2, 7} {2, 2, 2, 8} {2, 2, 3, 3} {2, 2, 3, 4} {2,
2, 3, 5} {2, 2, 3, 6} {2, 2, 3, 7} {2, 2, 3, 8} {2, 2, 4, 4} {2, 2, 4, 5} {2, 2
, 4, 6} {2, 2, 4, 7} {2, 2, 4, 8} {2, 2, 5, 5} {2, 2, 5, 6} {2, 2, 5, 7} {2, 2,
5, 8} {2, 2, 6, 6} {2, 2, 6, 7} {2, 2, 6, 8} {2, 2, 7, 7} {2, 2, 7, 8} {2, 2, 8,
8} {2, 3, 3, 3} {2, 3, 3, 4} {2, 3, 3, 5} {2, 3, 3, 6} {2, 3, 3, 7} {2, 3, 3, 8
} {2, 3, 4, 4} {2, 3, 4, 5} {2, 3, 4, 6} {2, 3, 4, 7} {2, 3, 4, 8} {2, 3, 5, 5}
{2, 3, 5, 6} {2, 3, 5, 7} {2, 3, 5, 8} {2, 3, 6, 6} {2, 3, 6, 7} {2, 3, 6, 8} {2
, 3, 7, 7} {2, 3, 7, 8} {2, 3, 8, 8} {2, 4, 4, 4} {2, 4, 4, 5} {2, 4, 4, 6} {2,
4, 4, 7} {2, 4, 4, 8} {2, 4, 5, 5} {2, 4, 5, 6} {2, 4, 5, 7} {2, 4, 5, 8} {2, 4,
6, 6} {2, 4, 6, 7} {2, 4, 6, 8} {2, 4, 7, 7} {2, 4, 7, 8} {2, 4, 8, 8} {2, 5, 5
, 5} {2, 5, 5, 6} {2, 5, 5, 7} {2, 5, 5, 8} {2, 5, 6, 6} {2, 5, 6, 7} {2, 5, 6,
8} {2, 5, 7, 7} {2, 5, 7, 8} {2, 5, 8, 8} {2, 6, 6, 6} {2, 6, 6, 7} {2, 6, 6, 8}
{2, 6, 7, 7} {2, 6, 7, 8} {2, 6, 8, 8} {2, 7, 7, 7} {2, 7, 7, 8} {2, 7, 8, 8} {
2, 8, 8, 8} {3, 3, 3, 3} {3, 3, 3, 4} {3, 3, 3, 5} {3, 3, 3, 6} {3, 3, 3, 7} {3,
3, 3, 8} {3, 3, 4, 4} {3, 3, 4, 5} {3, 3, 4, 6} {3, 3, 4, 7} {3, 3, 4, 8} {3, 3
, 5, 5} {3, 3, 5, 6} {3, 3, 5, 7} {3, 3, 5, 8} {3, 3, 6, 6} {3, 3, 6, 7} {3, 3,
6, 8} {3, 3, 7, 7} {3, 3, 7, 8} {3, 3, 8, 8} {3, 4, 4, 4} {3, 4, 4, 5} {3, 4, 4,
6} {3, 4, 4, 7} {3, 4, 4, 8} {3, 4, 5, 5} {3, 4, 5, 6} {3, 4, 5, 7} {3, 4, 5, 8
} {3, 4, 6, 6} {3, 4, 6, 7} {3, 4, 6, 8} {3, 4, 7, 7} {3, 4, 7, 8} {3, 4, 8, 8}
{3, 5, 5, 5} {3, 5, 5, 6} {3, 5, 5, 7} {3, 5, 5, 8} {3, 5, 6, 6} {3, 5, 6, 7} {3
, 5, 6, 8} {3, 5, 7, 7} {3, 5, 7, 8} {3, 5, 8, 8} {3, 6, 6, 6} {3, 6, 6, 7} {3,
6, 6, 8} {3, 6, 7, 7} {3, 6, 7, 8} {3, 6, 8, 8} {3, 7, 7, 7} {3, 7, 7, 8} {3, 7,
8, 8} {3, 8, 8, 8} {4, 4, 4, 4} {4, 4, 4, 5} {4, 4, 4, 6} {4, 4, 4, 7} {4, 4, 4
, 8} {4, 4, 5, 5} {4, 4, 5, 6} {4, 4, 5, 7} {4, 4, 5, 8} {4, 4, 6, 6} {4, 4, 6,
7} {4, 4, 6, 8} {4, 4, 7, 7} {4, 4, 7, 8} {4, 4, 8, 8} {4, 5, 5, 5} {4, 5, 5, 6}
{4, 5, 5, 7} {4, 5, 5, 8} {4, 5, 6, 6} {4, 5, 6, 7} {4, 5, 6, 8} {4, 5, 7, 7} {
4, 5, 7, 8} {4, 5, 8, 8} {4, 6, 6, 6} {4, 6, 6, 7} {4, 6, 6, 8} {4, 6, 7, 7} {4,
6, 7, 8} {4, 6, 8, 8} {4, 7, 7, 7} {4, 7, 7, 8} {4, 7, 8, 8} {4, 8, 8, 8} {5, 5
, 5, 5} {5, 5, 5, 6} {5, 5, 5, 7} {5, 5, 5, 8} {5, 5, 6, 6} {5, 5, 6, 7} {5, 5,
6, 8} {5, 5, 7, 7} {5, 5, 7, 8} {5, 5, 8, 8} {5, 6, 6, 6} {5, 6, 6, 7} {5, 6, 6,
8} {5, 6, 7, 7} {5, 6, 7, 8} {5, 6, 8, 8} {5, 7, 7, 7} {5, 7, 7, 8} {5, 7, 8, 8
} {5, 8, 8, 8} {6, 6, 6, 6} {6, 6, 6, 7} {6, 6, 6, 8} {6, 6, 7, 7} {6, 6, 7, 8}
{6, 6, 8, 8} {6, 7, 7, 7} {6, 7, 7, 8} {6, 7, 8, 8} {6, 8, 8, 8} {7, 7, 7, 7} {7
, 7, 7, 8} {7, 7, 8, 8} {7, 8, 8, 8} {8, 8, 8, 8}

momal
13-05-2008, 21:57
ببین میتونی این مشکل رو رفع کنی....

dogtag
13-05-2008, 23:10
یعنی چی؟
الان هیچ 2 مجموعه ای شبیه هم نیستند

اینهایی که قرمز کردی چه اشکالی دارند؟

شاید منظورت انتخاب مجموعه هایی از زیر مجموعه نیست
منظورت انتخاب فرده؟

دقیق بگو لطفاً

dogtag
14-05-2008, 06:59
می خوای 1 کاری کن:
بگو این برنامه به ازای n=4 و m=2 باید دقیقاً چی پس بده؟
کامل بنویس

golden_compass
14-05-2008, 13:11
الگوریتمی که خودم کشفش کردم وخیلی باهاش حال می کنم :
هر مجموعه رو مثل {3و2و1} به صورت دنباله ای از 0 و 1 ها یا بهتر بگم یه عدد باینری در نظر می گیریم. در مرحله اول دنباله برای مجموعه بالا 000 هست. با توجه به وجود هر عدد یک، عضو متناظر با آن در مجموعه را چاپ می کنیم. برای مر حله بعد یک عدد به عدد باینریمون اضافه می کنیم. واضح است که تمام زیر مجموعه ها چاپ خواهند شد. (عدد باینری از 0 تا( 2 به توان n )منهای 1 تغییر می کند...) حالا می تونید یه متد تعریف کنید که تعداد 1 ها رو بشمره تا مجموعه های k عضوی مورد نظرتون رو چاپ کنید.
این الگوریتم سرعت فوق العاده بالایی داره اما عیبی که داره اینه که نمیشه تحت این الگوریتم تمام زیر مجموعه ها رو به ترتیب تعداد اعضا چاپ کرد اما فکر می کنم سرعت فوق العاده بالاش این عیبش رو می پوشونه.
البته من پست های بقیه دوستان رو نخوندم، شاید تو اون ها به این الگوریتم اشاره شده باشه... فقط خواستم کمک کرده باشم.
اینم سورسش که امروز با جاوا نوشتم و به راحتی می تونید به ++c برش گردونید:



import java.util.Scanner;
import java.lang.Math ;

public class Main {
public static int counter = 0 ;
public static int Number_of_Ones (String a){
int result = 0 ;
for (int i = 0 ; i < a.length() ; i++){
if (a.charAt(i) == '1'){
result++ ;
}
}
return result ;
}
public static int lastOne (String a){
int result = -1 ;
for (int i = a.length() - 1 ; i >=0 && result < 0; i--){
if (a.charAt(i) == '1')
result = i ;
}
return result ;
}
public static String Convert_to_Binary (int Number , int n){
String Result = "";
for (int i = 1 ; i <= n ; i++){
Result = (Number%2) + Result ;
Number /= 2 ;
}
return Result ;
}
public static String sum1 (String a , int n){
String result = "" ;
counter++ ;
result = Convert_to_Binary(counter , n) ;
return result ;
}
public static void main(String[] args) {
Scanner input = new Scanner (System.in) ;
int n = input.nextInt();
int s = input.nextInt();
int m = (int) Math.pow(2, n) ;
int[]array = new int [n] ;
String binaries = "" ;
for (int i = 0 ; i < n ; i++){
array[i] = i + 1 ;
binaries += 0 ;
}
for (int i = 0 ; i < m ; i++){
if (Number_of_Ones(binaries) == s){
System.out.print("{") ;
for (int j = 0 ; j < n ; j++){
if (binaries.charAt(j) == '1')
if (j == lastOne(binaries))
System.out.print(array[j]) ;
else
System.out.print(array[j] + ",") ;
}
System.out.println("}") ;
}
binaries = sum1(binaries , n) ;
}
}

}

اینم خروجیش برای n = 8 , k = 4:

8
4
{5,6,7,8} - {4,6,7,8} - {4,5,7,8} - {4,5,6,8} - {4,5,6,7} - {3,6,7,8} - {3,5,7,8} - {3,5,6,8} - {3,5,6,7} - {3,4,7,8} - {3,4,6,8} - {3,4,6,7} - {3,4,5,8} - {3,4,5,7} - {3,4,5,6} - {2,6,7,8} - {2,5,7,8} - {2,5,6,8} - {2,5,6,7} - {2,4,7,8} - {2,4,6,8} - {2,4,6,7} - {2,4,5,8} - {2,4,5,7} - {2,4,5,6} - {2,3,7,8} - {2,3,6,8} - {2,3,6,7} - {2,3,5,8} - {2,3,5,7} - {2,3,5,6} - {2,3,4,8} - {2,3,4,7} - {2,3,4,6} - {2,3,4,5} - {1,6,7,8} - {1,5,7,8} - {1,5,6,8} - {1,5,6,7} - {1,4,7,8} - {1,4,6,8} - {1,4,6,7} - {1,4,5,8} - {1,4,5,7} - {1,4,5,6} - {1,3,7,8} - {1,3,6,8} - {1,3,6,7} - {1,3,5,8} - {1,3,5,7} - {1,3,5,6} - {1,3,4,8} - {1,3,4,7} - {1,3,4,6} - {1,3,4,5} - {1,2,7,8} - {1,2,6,8} - {1,2,6,7} - {1,2,5,8} - {1,2,5,7} - {1,2,5,6} - {1,2,4,8} - {1,2,4,7} - {1,2,4,6} - {1,2,4,5} - {1,2,3,8} - {1,2,3,7} - {1,2,3,6} - {1,2,3,5} - {1,2,3,4} -


ایرادی که تو سورس بالا هست (و قابل رفع شدن هم هست) اینه که من تو حلقه for آخر، i رو از 0 تا m که برابر 2 به توان n هست تغییر دادم که این ممکن است overflow رو (در ++c) در پی داشته باشه. برای رفع اون می تونید دنباله خودتون رو با دنباله n تایی 1...111 مقایسه کنید و بگید تا زمانی که از این عدد ((2 به توان n )منهای 1) کوچکتر یا مساوی هست به عدد اضافه کن و در ادامه باید اون counter رو هم حذف کنید و به جاش جمع دودویی رو روی آرایه n تایی پیاده کنید. اگر بخواهید خیلی بهینه باشید، آرایه رو هم می تونید boolean تعریف کنید و ... .
من از String استفاده کردم، چون سریع تر می تونستم کد رو بنویسم. اما استفاده از آرایه پردازش رو خیلی کمتر می کنه...
همون طوری که می بنید بر خلاف ظاهر پیچیدش، راه حل بسیار ساده ای داشت!
اگر ترتیب خاصی مد نظرتون نیست، از این الگوریتم استفاده کنید...
موفق باشید.

momal
17-05-2008, 10:58
یعنی چی؟
الان هیچ 2 مجموعه ای شبیه هم نیستند

اینهایی که قرمز کردی چه اشکالی دارند؟

شاید منظورت انتخاب مجموعه هایی از زیر مجموعه نیست
منظورت انتخاب فرده؟

دقیق بگو لطفاً


دوست عزیز اینها یی که قرمز کردم ایرادش اینه که توشون عدد تکراری وجود داره که البته من چند تاشو قمز کردم خیلی بیشتر از اینها بودن...
تو مجموعه ها عضو تکراری نباید وجود داشته باشه...
بذار یه مثال بزنم تا متوجه بشی:

فکر کن ما یه دیس میوه داریم که توش 2 تا سیب و2 تا پرتقال و3 تا گلابی و 3 تا خیار داریم.
اگه بخوایم مجموعه میوه های موجود در دیس رو بنویسیم به این صورته :
{سیب ،پرتقال،گلابی،خیار}
و نوشتن {سیب،سیب،پرتقال،پرتقال،گل بی،گلابی،گلابی،خیار،خیار خیار،} اشتباه است.


تو مجموعه هایی که تو خروجی برنامه هست ما {6،7،8،8} رو داریم.این مجموعه در ظاهر 4 عضو داره ولی در اصل 3 عضویه:{6،7،8}...عدد 8 تکراری یک عضو حساب میشه. اینو من نمی گم ،ریاضیات این تعریف رو برای یک مجموعه ارائه کرده.

و همین مساله است که کارو مشکل کرده....
ببین می تونی ان مشکل رو رفع کنی.

و اینکه گفتی برای n=4 ,m=2خروجی باید این باشه:

12 13 14
23 24
34

امیدوارم متوجه شده باشی...

momal
17-05-2008, 11:01
golden_compass عزیز ممنون که زحمت کشیدی....
من اصلا با جاوا آشنایی ندارم ولی بذار رو توضیحاتی که دادی فکر کنم ببینم چه جوریه .....

میتونی خودت زحمت بکشی به C++ تبدیلش کنی؟

golden_compass
17-05-2008, 19:20
متاسفانه من وقت تبدیلشون رو ندارم، اما خودتون کد ++c رو بنویسید فکر کنم بهتر باشه، پیشنهاد می کنم روی آرایه پیاده سازی کنید، در هر صورت این یکی از الگوریتم ها بود و در درست بودن اون شک نکنید...:5:

m.vazir3010i
22-05-2008, 15:13
این یکی دیگه کامله ولی زید سعی نکن بفهمی چه کار میکنه:31:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید