PDA

View Full Version : توضیح سوال حل شده به زبان c



konkuru
سه شنبه 06 خرداد 1393, 16:45 عصر
سلام این سوال با جوابش هست فقط میخوام یکی توضیح بده سوال چی خواسته و پاسخش چطوری کار میکنه ممنون


There is a queue with N people. Every person has a different heigth. We can see P people, when we are looking from the beginning, and R people, when we are looking from the end.It’s because they are having different height and they are covering each other. How many different permutations of our queue has such a interesting feature?
Input Specification
The input consists of T test cases. The number of them (1<=T<=10000) is given on the first line of the input file.
Each test case consists of a line containing three integer numbers: N that indicates the number of people in a queue (1 <= N <= 13), and then two more integers. The first corresponds to the number of people, that we can see looking from the beginning, and the second corresponding to the number of people, that we can see looking from the end.
Output Specification
For every test case your program has to determine one integer. Print how many permutations of N people we can see exactly P people from the beginning, and R people, when we are looking from the end.
Sample Input
3

10 4 4
11 3 1

3 1 2
Output for the Sample Input
90720
1026576
1






اینم کدش


#include <stdio.h>
#include <string.h>


int t, n, q, h, dp[15][15][15];

void init() {
dp[1][1][1] = 1;
for (int i = 2; i <= 13; i ++) {
for (int j = 1; j <= 13; j ++) {
for (int k = 1; k <= 13; k ++) {
dp[i][j][k] += dp[i - 1][j - 1][k] + dp[i - 1][j][k - 1] + dp[i - 1][j][k] * (i - 2);
}
}
}
}

int main() {
init();
scanf("%d", &t);
while (t --) {
scanf("%d%d%d", &n, &q, &h);
printf("%d\n", dp[n][q][h]);
}
return 0;
}

konkuru
سه شنبه 06 خرداد 1393, 21:50 عصر
اقا کسی نفهمید سوال چی میخواد؟؟؟ ممنون میشم توضیح بدید فردا باید ارائه بدم!!!!!!!!!!!!!!!!!

konkuru
چهارشنبه 07 خرداد 1393, 09:41 صبح
یعنی هم هیچکی نمیدونه این چیکار میکنه؟؟؟؟
یعنی اینقدر سخته ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

rahnema1
چهارشنبه 07 خرداد 1393, 11:11 صبح
بله سوال ، سوال سختی هست. معمولا این جور سوالات در مسابقات برنامه نویسی مطرح میشه. حالا شما می خواهید سوال را برای شما ترجمه کنیم؟

کامبیز اسدزاده
چهارشنبه 07 خرداد 1393, 11:15 صبح
بله سوال ، سوال سختی هست. معمولا این جور سوالات در مسابقات برنامه نویسی مطرح میشه. حالا شما می خواهید سوال را برای شما ترجمه کنیم؟

فکر نکنم کسی مایل به ترجمه و تجزیه تحلیلش باشه ! این وظیفه اساتیدی هست که سوال رو مطرح میکنند نه من و شما و امسال ما که به صورت رایگان اینجا فعالیت میکنیم.

konkuru
چهارشنبه 07 خرداد 1393, 11:16 صبح
اره سوال acm جوابشم یعنی کدش رو از یه سایت چینی پیدا کردم
حالا میخوام ببینم سوال چی میخواد و کد چطوری کار میکنه
چون میخوام برم ارائه بدم باید حضوری ارائه بدم
ممنون میشم خیلی نیازد ارم تا ظهر یا شب جوابشو حتما میخوام

rahnema1
چهارشنبه 07 خرداد 1393, 11:33 صبح
میتونستی توی اینترنت سرچ کنی توضیحاتش را پیدا کنی
حالا واسه اینکه کار شما لنگ نمونه لینک توضیحات را میذارم ولی خداییش ترجمه رو بده استادتون انجام بده
http://cgi.csc.liv.ac.uk/~martin/teaching/comp202/Exercises/Divide-and-conquer-solution.pdf

konkuru
چهارشنبه 07 خرداد 1393, 13:09 عصر
خداییش از سوال بیشتر چیزی فهمیدم تا توضیحاتش کسی هست به صورت خیلی ساده بگه این کد چیکار میکنه !!!
خخخخخخخخخ
بخدا پای مشروطی و اخراج از دانشگاه در میونه !!!!

motherboard
چهارشنبه 07 خرداد 1393, 13:10 عصر
سلام این سوال با جوابش هست فقط میخوام یکی توضیح بده سوال چی خواسته و پاسخش چطوری کار میکنه ممنون


There is a queue with N people. Every person has a different heigth. We can see P people, when we are looking from the beginning, and R people, when we are looking from the end.It’s because they are having different height and they are covering each other. How many different permutations of our queue has such a interesting feature?
Input Specification
The input consists of T test cases. The number of them (1<=T<=10000) is given on the first line of the input file.
Each test case consists of a line containing three integer numbers: N that indicates the number of people in a queue (1 <= N <= 13), and then two more integers. The first corresponds to the number of people, that we can see looking from the beginning, and the second corresponding to the number of people, that we can see looking from the end.
Output Specification
For every test case your program has to determine one integer. Print how many permutations of N people we can see exactly P people from the beginning, and R people, when we are looking from the end.
Sample Input
3

10 4 4
11 3 1

3 1 2
Output for the Sample Input
90720
1026576
1






اینم کدش


#include <stdio.h>
#include <string.h>


int t, n, q, h, dp[15][15][15];

void init() {
dp[1][1][1] = 1;
for (int i = 2; i <= 13; i ++) {
for (int j = 1; j <= 13; j ++) {
for (int k = 1; k <= 13; k ++) {
dp[i][j][k] += dp[i - 1][j - 1][k] + dp[i - 1][j][k - 1] + dp[i - 1][j][k] * (i - 2);
}
}
}
}

int main() {
init();
scanf("%d", &t);
while (t --) {
scanf("%d%d%d", &n, &q, &h);
printf("%d\n", dp[n][q][h]);
}
return 0;
}

دوست عزیز.تجزیه و تحلیل خاصی رو نمی خواد شما اگه در حد خیلی مقدماتی و اشنایی با تابع و ارایه زبان c رو بلد باشید خودتون خیلی راحت می تونید به محتوای کد ببرید و نیازی به ترجمه نیست.اول از همه 4 تا متغیر از نوع صحیح و یک ارایه 3 بعدی پیش تعریف شدند(اینها کلمات قلمبه سلمبه ای نیستند واگر کتاب پیام نور و یا امیرکبیر رو دانلود کنی می تونی راحت مباحث رو فرا بگیری).بعد از پیش تعریف متغیر ها تابعی با یک نام دل به خواهی از نوع void تعریف شده و شروع عملیات تابع با اکولاد شروع شده مکان اولین اندیس برای هر ارایه در کنار هم مقدار 1 رو گرفته.بعد از این اومده با 3 تا حلقه for و یا تو در تو که به ترتیب i , j , k اندیس های سه ارایه هستش روندی رو به خودش گرفته.مثلا اندیس k از 1 تا 13 باید طی بشه اون هم برای بعد سوم ارایه بعد از این چرخه اندیس j که در ابتدا مقدار 1 رو داره یه دونه میره جلو و از دوباره اندیس k از 1 تا 13 میره و دوباره اندیس j یکی میره جلو تا همین جوری نوبت 13 برسه و وقتی به 13 رسید دوباره روز از نو و روزی از نو میشه و مانند همین اتفاقات برای اندیس i میفته با این فرق که اندیس j هم باید بعد از اندیس k بچرخه.بعد از همه ی این ها باز می رسیم به اون عملیات ضرب پایین که اگه در حد مقدماتی هم بلد باشی راحت متوجه میشی.خوب تابع تموم شد.میریم سراغ تابع اصلی که در اولین دستور اسم تابع رو نوشته تا تابع اجرا بشه.توسط اشاره گر & اون متغیرهای صحیح رو که در بالا پیش تعریف شده بود رو کشونده به تابع اصلی تا مقدار بده و توسط while کنترل کرده.scanf ورودی هستش و printf خروجی هستش.هیچ چیز خاصی رو نداره و توصیه من اینه که برو این مباحث ابتدایی رو حتما با دقت بخون تازه اون وقت می فهمی که هیچ چیز خاصی نداره.لازم به ذکره که دوستان پیشکسوت هم کاملا از جریان این کد مطلع هستند و ایشان سوالات بنده رو جواب می دهند.اما مشکل شما در خود یادگیری c و تجزیه و تحلیل اون هستش.چرا که اگه واقعا مباحث ابتدایی رو بلد بودید خودتون راحت به جریان این کد پی می بردید.

konkuru
چهارشنبه 07 خرداد 1393, 13:13 عصر
برادر من این کد رو تعریف کردید شما من میخوام بدونم چیکار میکنه الگوریتمش چیه !!!
اینارو که خودمم میدونستم داداش گلم
سوال acm یکم دقت بفرمایید !!!! سطحم اینقدر هم پایین نیست !!!!!!!!!

motherboard
چهارشنبه 07 خرداد 1393, 13:18 عصر
برادر من این کد رو تعریف کردید شما من میخوام بدونم چیکار میکنه الگوریتمش چیه !!!
اینارو که خودمم میدونستم داداش گلم
سوال acm یکم دقت بفرمایید !!!! سطحم اینقدر هم پایین نیست !!!!!!!!!
والا من نمیدونم اسم الگوریتمش چیه. و برام باعث تعجبه واقعا در مسابقات acm ایا از شرکت کننده برنامه می خوان و یا ذکر نام الگوریتم.با احترام من مطمئن هستم که اصلا شما نمیدونید حلقه چیه و الا در خواست محتوای الگوریتم رو نمی کردید!!!!!

konkuru
چهارشنبه 07 خرداد 1393, 13:21 عصر
اره شما میدونی داداش گلم شما برنامه نویس ممنون دمت گرم مرسی متشکر

اقا یکی مارو درک کنه اینو باید تحویل حضوری بدم یکی بگه چه کاری انجام میده این کد یعنی چی از ما میخواد و خرویجیش چیه چه چیزی ورودی میگیره و خروجیش چیه !!!!!!!!!!!

motherboard
چهارشنبه 07 خرداد 1393, 13:26 عصر
اره شما میدونی داداش گلم شما برنامه نویس ممنون دمت گرم مرسی متشکر

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

konkuru
چهارشنبه 07 خرداد 1393, 13:29 عصر
اقا برادر شما خوبی من بد شما کد نویسیت عالیه من اصلا هیچی بارم نیست خب
فقط دوستان به این نکته مشروطی دقت بفرمایید
پای یک مشروطی در میان است درک کنید لطفا!!!!
توضیح بدید قردا باید تحویل حضوری بدم سوالش سخته درسته ولی من شمارو باور دارم

کامبیز اسدزاده
چهارشنبه 07 خرداد 1393, 15:43 عصر
اقا برادر شما خوبی من بد شما کد نویسیت عالیه من اصلا هیچی بارم نیست خب
فقط دوستان به این نکته مشروطی دقت بفرمایید
پای یک مشروطی در میان است درک کنید لطفا!!!!
توضیح بدید قردا باید تحویل حضوری بدم سوالش سخته درسته ولی من شمارو باور دارم

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

(while(c=1) printf(cpp=0
چهارشنبه 07 خرداد 1393, 16:45 عصر
دوست عزیز نه خودت رو کوچیک کن نه دوستان رو نه اون استاد بدبختی که الان پیش خودش فکر میکنه مهندس تحویل مملکت میده...
شما که هیچی بارت نیست لازم نکرده بشی مهندس امثال شما هستن که با چکو چونه زدن نمره میگیرن بعد وضع مملکت میشه همینی که الان میبینید.
متاسفانه همه چیز شده مدرک گرایی شما نمره رو با پاسخ دادن دوستان بگیری چی میشه؟ واقعا خوشبخت میشی؟ واقعا احساس با سواد بودن میکنی؟ سینرو میخوای بدی جلو بگی من تحصیلات عالیه دارم؟ روت میشه واقعا فردا بگی من مهندسم ؟

خودت رو کنترل کن، دوست من. :لبخندساده:

konkuru
چهارشنبه 07 خرداد 1393, 16:50 عصر
why.darkness (http://barnamenevis.org/member.php?219337-why-darkness)

زیاد داری گو میخوری اینو میدونستی؟؟؟؟
کمتر بخور همیشه بخور داداش گلم

(while(c=1) printf(cpp=0
چهارشنبه 07 خرداد 1393, 17:00 عصر
why.darkness (http://barnamenevis.org/member.php?219337-why-darkness)

زیاد داری *****میخوری اینو میدونستی؟؟؟؟
کمتر بخور همیشه بخور داداش گلم

دُرُست صحبت کن.
اینکه من گفتم "خودت رو کنترل کن، دوست من" به این معنی نبود که با حرفهاش موافق نبودم.
درضمن، اینجا بهتره به همدیگه احترام بگذاریم.
حق why.darkness جان نیست که باهاش اینطوری برخورد بشه.

کامبیز اسدزاده
چهارشنبه 07 خرداد 1393, 17:02 عصر
why.darkness (http://barnamenevis.org/member.php?219337-why-darkness)

زیاد داری گو میخوری اینو میدونستی؟؟؟؟
کمتر بخور همیشه بخور داداش گلم



خودت رو کنترل کن، دوست من. :لبخندساده:

نظرت چیه ؟ من خودمو کنترل کردم حرفی ندارم حرف حق رو گفتم طرف فرهنگشو نشون داد :تشویق:
خدا خیرتون بده ما بیخیال میشیم...

konkuru
چهارشنبه 07 خرداد 1393, 17:04 عصر
بابا شما همتون مهندس همتون کد نویس دم همتون گرم /.... همتونبا فرهنگ
دم این اقای rahnama گرم یکم ادمو درک میکنه اینقدر از این ادمایی که هیچی بارشون نیست گنده بر میدارن بدم میاد
why.darkness یادت باشه زیاد نخوری خب افرین .....

(while(c=1) printf(cpp=0
چهارشنبه 07 خرداد 1393, 17:04 عصر
نظرت چیه ؟ من خودمو کنترل کردم حرفی ندارم حرف حق رو گفتم طرف فرهنگشو نشون داد :تشویق:
خدا خیرتون بده ما بیخیال میشیم...

اشکال نداره، داداش. ولش کن.
من از تو معذرت میخوام.

کامبیز اسدزاده
چهارشنبه 07 خرداد 1393, 17:16 عصر
why.darkness یادت باشه زیاد نخوری خب افرین .....

بچه جان از حرف زدنت معلومه نه سنو سالی داری نه سوادو فرهنگ درست حسابی :لبخندساده: فکر کنم اشتنباه اومدی در طویله اونطرفه ! :چشمک:



اشکال نداره، داداش. ولش کن.
من از تو معذرت میخوام.

چرا شما معذرت بخوای دوست من شما سروری شما به خودت اجازه نده سینتو بدی جلوی اینجور آدما البته شک میکنم آدم باشه !

کامبیز اسدزاده
چهارشنبه 07 خرداد 1393, 17:20 عصر
به هر حال بیخیال من از اینکه جو تاپیک کمی بهم خورد معذرت میخوام هدفم این نبود یکم جوش آوردم چون واقعا پست های التماس حل کردن مسائل دانشجویی بیش از حد زیاد شده و هیچ قانونی هم نیست که در این مورد نقض نشده باشه... وقتی یکی میاد پست میزنه اونم بر خلاف قوانین یعنی نویسنده و تذکر دهنده رو آدم حساب نکرده ! :لبخندساده: و این یعنی نهایت بی احترامی به مدیران و اساتید این تالار ها...