سوالات الگوریتم

  • شروع کننده موضوع شروع کننده موضوع armita
  • تاریخ شروع تاریخ شروع

armita

کاربر خاک‌انجمن‌خورده
ارسال‌ها
2,204
امتیاز
686
نام مرکز سمپاد
دبیرستان فرزانگان ۱
شهر
تهران
دانشگاه
شریف
رشته دانشگاه
‫علوم کامپیوتر‬‎
بهتر نیست هر سوالی رو کسی مشکل داشت بذاریم ؟
مثلا من بگم فلان سوال فلان چپتر رو نمی‌دونم بعد بقیه بیان اون رو توضیح بدن ! اولاش رو راحت می‌شد فهمید :-?

این تاپیک هم راجع به یوساکوئه
http://www.sampadia.com/forum/index.php/topic,19198

#این تاپیک ادامه ی تاپیک"ماراتن یوساکو usaco (ترجمه سوالات یوساکو)" هس ما اینجا می خوایم اشکال هایی که توی یوساکو داریم رو با هم حل کنیم
 
پاسخ : سوالات الگوریتم

اینجوری که کد آماده به همدیگه می دید اصلا خوب نیست! خودتون ضررش رو می بینید. اگه دیگه خیلی گیر کرده بودید الگوریتم رو بپرسید! ولی به هیچ وجه کد آماده بقیه رو نگیرید.
 
پاسخ : سوالات الگوریتم

من جواب سوال friday رو اشتباه در میارم
می شه بگید کجای کدم اشتباهه؟
کد:
#include<fstream>
using namespace std;
      ifstream  fin ("friday.in.txt");
      ofstream fout ("friday.out.txt");
    
int main(){
int n,day=0,a[7];
  int days;
    for(int i=0;i<7;i++)
    a[i]=0;
    a[0]=1;
   fin>>n;
   for(int year=1990;year<(1990+n);year++){
           for(int month=0;month <12;month++){
                   
                   if (month==0 ||month==2 ||month==4 ||month==6 ||month==7 ||month==9 ||month==11)
           days= 31;
      else if (month==3 ||month==5 ||month==8 ||month==10)
           days= 30;
      else if(month==1){
          if((year%400) ==0 ||((year%100)!=0)&& (year%4)==0)
               days= 29;
          else
               days= 28;
               }
               
               
                   day=(day+days)%7;
                   a[day]++;
                   if(year==(1989+n ) && month==11)
                        a[day]--;                   
                   }
           }
   for(int i=0;i<=6;i++){
           if(i==6)
           fout<<a[i]<<endl;
           else
           fout<<a[i]<<" ";
           }
    return 0;
}
 
پاسخ : سوالات الگوریتم

سلام!!! احتمالا خیلی دیر شده و تا حالا 100 بار اکسپتش کردی ولی به این مسیله فکر کردی که یوساکو سال شروعو1900 گرفته و تو 1990؟؟؟
فکر کنم اشتباهت همین بوده!
 
پاسخ : سوالات الگوریتم

این سوالو تو قسمت الگوریتم هم گذاشتم.
من برنامه milk2 رو نوشتم و تا تست 6 درست کار میکنه ولی تست 7 رو غلط میگیره هر کاری کردم نفهمیدم اشکالم چیه اگه میشه شما بگید:
کد:
#include<iostream>
#include<fstream>

using namespace std;

void shift(int* a,int time,int start,int n)
{
	for(int i=0;i<time;i++)
	{
		for(int j=n;j>=start;j--)
			a[j]=a[j-1];
		n++;
	}
}

int main()
{
	ifstream fin("milk2.in");
	ofstream fout("milk2.out");
	int n;
	int times[6000]={0};
	int s,e;
	int start[2],end[2];
	int noot=1;
	times[0]=-2;
	times[1]=99999999999;
	fin>>n;
	for(int q=0;q<n;q++)
	{
		fin>>s>>e;
		for(int i=0;i<=noot;i++)
		{
			if(s>=times[i])
			{
				start[0]=i;
				start[1]=i+1;
			}
			if(e>=times[i])
			{
				end[0]=i;
				end[1]=i+1;
			}
		}
		if(end[0]==start[0])
		{
			if(end[0]%2==0)
			{
				shift(times,2,end[0]+1,noot+1);
				times[end[0]+1]=s;
				times[end[0]+2]=e;
				noot+=2;
			}
		}
		else
		{
			if(start[1]==end[0])
			{
				if(start[1]%2==1)
					times[start[1]]=s;
				else
					times[start[1]]=e;
			}
			else
			{
				if(start[1]%2==1)
					times[start[1]]=s;
				if(end[0]%2==0)
					times[end[0]]=e;
			}
			for(int i=start[1]+1;i<end[1]-1;i++)
				times[i]=-1;
		}
		int help=noot;
			for(int i=1;i<noot;i++)
			{
				if(times[i]==-1)
				{
						for(int j=i;j<noot;j++)
							times[j]=times[j+1];
						i--;
						help--;
				}
			}
			noot=help;
	}
	
	for(int i=2;i<noot-1;i+=2)
		if(times[i]==times[i+1])
			times[i]=times[i+1]=-1;
			
	int help=noot;
	for(int i=1;i<noot;i++)
	{
		if(times[i]==-1)
		{
			for(int j=i;j<noot;j++)
				times[j]=times[j+1];
			i--;
			help--;
		}
	}
	noot=help;
	int max1=0,max2=0;
	for(int i=1;i<noot-1;i+=2)
	{
		if(times[i+1]-times[i]>max1)
			max1=times[i+1]-times[i];
	}
	for(int i=2;i<noot-1;i+=2)
	{
		if(times[i+1]-times[i]>max2)
			max2=times[i+1]-times[i];
	}
	fout<<max1<<" "<<max2<<endl;
	return 0;
}
 
پاسخ : سوالات الگوریتم

سلام دوستان
یه مشکلی داشتم با سوال namenum 1.2 :-??تو کامپوتر جواب درست میده ولی یوساکو این ارور رو میده :

Execution error: Your program had this runtime error: Bad
syscall #32000175 (RT_SIGPROCMASK) [email kolstad if you think
this is wrong]. The program ran for 0.227 CPU seconds before the
error. It used 16284 KB of memory.

------ Data for Run 10 ------
463373633623
----------------------------

Your program printed data to stderr. Here is the data:
-------------------
terminate_called_after_throwing_an_instance_of_'St9bad_alloc'
__what():__std::bad_alloc
-------------------

میشه راهنماییم کنید لطفا [-o< [-o< یه ماهه گیر این سوالم همش یجاش میلنگه...!! ~X(
 
پاسخ : سوالات الگوریتم

خوب مال اینه دارید 16مگ و خورده ای حافظه مصرف می کنید (شایدم بیشتر) !
یوساکو نهایتا 16 مگ اجازه می ده برنامتون حافظه بگیره ! اون یه خورده ای (شایدم بیشتر) مشکلو درست کرده !
 
پاسخ : سوالات الگوریتم

این کدمه
واسه کم شدن حافظش چیکار کنم ؟؟
یعنی باید موقعی که کلمه رو میسازه مقایسه رو انجام بده؟؟
کد:
#include<fstream>
#include<iostream>

using namespace std;

const int MaxN=5000;
const int MaxM=54*100*100 ;
string name[MaxN] , s[MaxM] ;
string a;
int b ,sep ,tav ;

      ifstream  fin ("namenum.in");
      ofstream fout ("namenum.out");


void compare(int i,int start,int end){

     for(int j=start ;j<end ;j++){

                    if(s[j] == name[i]){

                               fout << s[j] << endl;
                               sep ++ ;
                               }
                          }
     }


void harf1(int aa,int i){

    for(int j=0 ;j<b ;j++){

     if(a[i] == 50)
          s[aa+j] += "A";
     else if(a[i] == 51)
          s[aa+j] += "D";
     else if(a[i] == 52)
          s[aa+j] += "G";
     else if(a[i] == 53)
          s[aa+j] += "J";
     else if(a[i] == 54)
          s[aa+j] += "M";
     else if(a[i] == 55)
          s[aa+j] += "P";
     else if(a[i] == 56)
          s[aa+j] += "T";
     else if(a[i] == 57)
          s[aa+j] += "W";
}
}

void harf2(int aa,int i){

    for(int j=0 ;j<b ;j++){

     if(a[i] == 50)
          s[aa+j] += "B";
     else if(a[i] == 51)
          s[aa+j] += "E";
     else if(a[i] == 52)
          s[aa+j] += "H";
     else if(a[i] == 53)
          s[aa+j] += "K";
     else if(a[i] == 54)
          s[aa+j] += "N";
     else if(a[i] == 55)
          s[aa+j] += "R";
     else if(a[i] == 56)
          s[aa+j] += "U";
     else if(a[i] == 57)
         s[aa+j] += "X";
}
}

void harf3(int aa,int i){

     for(int j=0 ;j<b ;j++){

     if(a[i] == 50)
          s[aa+j] += "C";
     else if(a[i] == 51)
          s[aa+j] += "F";
     else if(a[i] == 52)
          s[aa+j] += "I";
     else if(a[i] == 53)
          s[aa+j] += "L";
     else if(a[i] == 54)
          s[aa+j] += "O";
     else if(a[i] == 55)
          s[aa+j] += "S";
     else if(a[i] == 56)
          s[aa+j] += "V";
     else if(a[i] == 57)
          s[aa+j] += "Y";
          }
}


int main() {

    ifstream userstream("dict.txt");
    int zz=0 ;

    while(!userstream.eof()){
                                  userstream >> name[zz];
                                     zz++;
                                  }


    fin >> a;


    int tav=1;
    for(int i=0 ;i<a.length() ;i++)
            tav *=3 ;

    int c=1;
    for(int i=0 ;i<a.length();i++){
                   c *=3 ;


    b = tav/c ;
    int aa=0;

    while( aa < tav ){

        if( (aa/b)%3 == 0 )
             harf1(aa,i);


        else if( (aa/b)%3 == 1 )
              harf2(aa,i);


        else if( (aa/b)%3 == 2 )
             harf3(aa,i);


        aa += b;
        }


           }

    for(int i=0 ;i<zz ;i++){
            if(name[i][0]==s[0][0] )
                     compare(i,0,tav/3);
            else if ( name[i][0]==s[tav/3][0])
                     compare(i,tav/3,2*tav/3);
            else if ( name[i][0]==s[2*tav/3][0])
                     compare(i,2*tav/3,tav);

                               }

    if(sep==0)
         fout << "NONE" << endl;


    return 0;
                           }
 
پاسخ : سوالات الگوریتم

ببین الان میای به ازای عدده هر کلمه ای که عددش اون می شه رو می سازی؟؟؟؟؟یعنی 3^12 تا رشته؟
پیشنهاد من اینه به جای این ، هر بار یه کلمه بیار عددشو به دست بیار ! اگه عددش با عدد اصلی یکی شد چاپش کن !
 
پاسخ : سوالات الگوریتم

به نقل از OOOWNING :
ببین الان میای به ازای عدده هر کلمه ای که عددش اون می شه رو می سازی؟؟؟؟؟یعنی 3^12 تا رشته؟
پیشنهاد من اینه به جای این ، هر بار یه کلمه بیار عددشو به دست بیار ! اگه عددش با عدد اصلی یکی شد چاپش کن !
اَاَاَاَاَ چقدر راحت حل شد
چرا به فکر خودم نرسید :-?
حیف اون همه وقتی که گذاشتم سر این کد.... :(
مرسی از راهنماییت :) طلا شی ایشااله ;;) ;;)
 
پاسخ : سوالات الگوریتم

ای بابا !
از ما که گذشت.... ;D
ولی ممنون !
همچنین!
 
پاسخ : سوالات الگوریتم

سلام .
یه سوال
چطوری می شه هر کدوم از کلمه هایی که توی این فایل هست رو ( http://ace.delos.com/usaco/namenumdict.txt ) توی خانه های یه آرایه ریخت؟
سوال name that number یوساکو هست
 
پاسخ : سوالات الگوریتم

نمی دونم منظورتو درست فهمیدم یا نه...
ولی اگه درست فهمیدم یه آرایه از نوع string بگیر...
کد:
[left]
#include<iostream>
#include<fstream>
using namespace std;

const int Maxn=5000+1000;
string s[Maxn] ; 
ifstream fin("dict.txt");
int main(){
for(int i=0;i<Maxn;i++){
fin>>s[i];
if(i>0 && s[i]==s[i-1])
break;
}
return 0;
}[/left]
 
پاسخ : سوالات الگوریتم

اینو می شه توی یوساکو نوشت؟
منظورم اینه که آدرس dict.txt رو چی بنویسم. ( برای یوساکو میخوام )
 
پاسخ : سوالات الگوریتم

;D
خوب اینو از اول می گفتی...
آره می شه... ;D ;)
موفقیت باشی...
 
پاسخ : سوالات الگوریتم

خوب کار رو به همین روند ادامه می دیم
فقط یه سری قانون هس واسه اینجا که الان به خاطر خودتونه
1- به هیچ وجه کد صحیح هیچ سوالی رو اینجا نمی ذارید
2- اگه دیه خیلی مشکل داشتید می تونید توی الگوریتم سوال از بچه ها کمک بخواین
با عرض پوشش هر پستی که مبنی بر درخواست گذاشتن کد بود یا یکی کد صحیح گذاشته بود رو حذف کردم
ولی خوب شما می تونید اگه کدتون مشکل اساسی داشت و نتونستید درستش کنید کد رو بذارید و از بچه ها کمک بخواید!
 
پاسخ : سوالات الگوریتم

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

مهسا میشه یه توضیح اضافه هم بزاریی که چه نوع اشکالاتی رو برای بحث بزاریم کهبعدش دیگه منظم شروع کنیم
 
پاسخ : سوالات الگوریتم

به نقل از .... :
مهسا میشه یه توضیح اضافه هم بزاریی که چه نوع اشکالاتی رو برای بحث بزاریم کهبعدش دیگه منظم شروع کنیم
ببین کلا این طوریه که خوب یه موقع هایی مطمئنم واسه همه پیش می یاد که به برنامشون یه گیری می ده یا کلا برنامشون یه باگی داره یا کامپایل ارور می ده یا کلا از این جور چیزا بعد کلا این طوریه که ما کلی زور می زنیم اشکال برناممونو رفع کنیم بعد ممکنه نشه دیه یا نتونیم! :-"
ما می خوایم اینجا به هم یاد بدیم برناممون که گیر کرد خیلی مشکل جدی و حل نشدنی نیس!
کلا روند همون طور که از بالا معلومه این طوریه که من میام می گم این کد منه مثلا اینو به من می گه یا مضکل داره و از این جور چیز ها بعد می شینیم تا جایی که سوادمون بکشه به هم کمک می کنیم اشکال برنامه ی هم رو می گیریم
یا مثلا من می خوام این سوال رو حل کنم خیلی فک کردم ولی هیچ ایده ای ندارم
این جا موردی که پیش می یاد اینه که فقط می خوایم از نظر الگوریتمش به هم کمک کنیم و به هیچ وجه کد درست یه سوالی رو ینجا نمی ذاریم چون این بیشترین ضرریه که می تونیم به اون آدم بزنیم
می فهمید منظورمو که...
کلا پستایی که می خوان یکی کد صحیحشو بذاره یا یکی کد درست رو بذاره پاک می شن دیه :-"
الان می دونم بد توضیح دادم ولی اگه جایی مشکل بود بگید ;D
 
پاسخ : سوالات الگوریتم

به نقل از مهسا.ق :
ببین کلا این طوریه که خوب یه موقع هایی مطمئنم واسه همه پیش می یاد که به برنامشون یه گیری می ده یا کلا برنامشون یه باگی داره یا کامپایل ارور می ده یا کلا از این جور چیزا بعد کلا این طوریه که ما کلی زور می زنیم اشکال برناممونو رفع کنیم بعد ممکنه نشه دیه یا نتونیم! :-"
ما می خوایم اینجا به هم یاد بدیم برناممون که گیر کرد خیلی مشکل جدی و حل نشدنی نیس!
کلا روند همون طور که از بالا معلومه این طوریه که من میام می گم این کد منه مثلا اینو به من می گه یا مضکل داره و از این جور چیز ها بعد می شینیم تا جایی که سوادمون بکشه به هم کمک می کنیم اشکال برنامه ی هم رو می گیریم
یا مثلا من می خوام این سوال رو حل کنم خیلی فک کردم ولی هیچ ایده ای ندارم
این جا موردی که پیش می یاد اینه که فقط می خوایم از نظر الگوریتمش به هم کمک کنیم و به هیچ وجه کد درست یه سوالی رو ینجا نمی ذاریم چون این بیشترین ضرریه که می تونیم به اون آدم بزنیم
می فهمید منظورمو که...
کلا پستایی که می خوان یکی کد صحیحشو بذاره یا یکی کد درست رو بذاره پاک می شن دیه :-"
الان می دونم بد توضیح دادم ولی اگه جایی مشکل بود بگید ;D

خو پس مهسا یه پیشنها اینجار و قفل کن یه تاپیک جدید بزن کلا برا رفع اشکال کد و الگوریتم برا هر برنامه ای نه صرفا یوساکو
 
پاسخ : سوالات الگوریتم

به نقل از .... :
خو پس مهسا یه پیشنها اینجار و قفل کن یه تاپیک جدید بزن کلا برا رفع اشکال کد و الگوریتم برا هر برنامه ای نه صرفا یوساکو
:-?
خوب پیشنهاد خوبیه ولی ما نمی تونیم رو برنامه نویسی کار کنیم به صورتی که دستمون باز باشه
می تونیم اسم تاپیک رو بکنیم "رفع اشکال الگوریتمی"
نظرتون چیه؟ ;D
 
Back
بالا