PDA

View Full Version : کمک در آرایه وکتور



maryam9903
یک شنبه 30 فروردین 1394, 18:26 عصر
سلام
1سوال دارم که با آرایه وکتور حل میشه.تا 1 جاهایی حلش کردم ولی کامل نیست.
سوالش به طور خلاصه میگه : 1 اسبی داریم که 4 تا نعل میخاد بخره.ولی نمیخاد 4 تا نعلش همرنگ باشه.بنابراین خروجی برنامه ما باید تعدادنعل هایی باشه که باید رنگش را عوض کنیم تا هیچ کدوم ازون 4 تا نعل همرنگ نباشه
به عنوان مثال اگه 4 تا عددی که کاربر به عنوان ورودی میدیم مثله هم باشه خروجی باید 3 باشه

ممنون میشم کمکم کنین.برنامه به زبان c++


#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a,s=0;
vector <int> vect;
for(int i=0;i<4;i++)
{
cin>>a;
vect.push_back(a);
}
for(int i=0;i<vect.size();i++)
{
for(int j=i+1;j<vect.size();j++)
{
if(vect[i]==vect[j])
{
s++;
vect.erase(vect.begin()+(j-1));
}
}
}
cout<<s;
}

rahnema1
سه شنبه 01 اردیبهشت 1394, 19:47 عصر
سلام یه روش ساده اینه که آرایه شامل 4 تا عدد را مرتب کنید و دو به دو تعداد شباهت ها را بشمارید البته روش بهینه نیست

count = 0
3 1 4 3
1 3 3 4

1 3 ====> if (1 ==3 ) count++;
3 3 ====> if (3 ==3 ) count++;
3 4 ====> if (3 ==4 ) count++;

maryam9903
سه شنبه 01 اردیبهشت 1394, 21:33 عصر
تا اونجایی که منظورتونو فهمیدم فکر نکنم اونجوری سایت CODEFORCES بهم ACCEPS بده !!!!

rahnema1
سه شنبه 01 اردیبهشت 1394, 21:41 عصر
تا اونجایی که منظورتونو فهمیدم فکر نکنم اونجوری سایت CODEFORCES بهم ACCEPS بده !!!!

حالا شما همین را بنویسید اگه accept نکرد اطلاع بدید تا یه فکری به حالش بکنیم :)

maryam9903
شنبه 05 اردیبهشت 1394, 13:07 عصر
حالا شما همین را بنویسید اگه accept نکرد اطلاع بدید تا یه فکری به حالش بکنیم :)

همون برنامه خودمو توش تغییراتی دادم درست شد و accept گرفتم


#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a,s=0,j=0,i=0;
vector <int> vect;
for(int i=0;i<4;i++)
{
cin>>a;
vect.push_back(a);
}
for(int i=0;i<vect.size();i++)
for(j=i+1;j<vect.size();j++)
{
if(vect[i]==vect[j])
{
s++;
vect.erase(vect.begin()+(j));
j--;
}
}
cout<<s<<"\n";
}

rahnema1
شنبه 05 اردیبهشت 1394, 20:35 عصر
آفرین، فقط اگه تونستید یه فکری به حال سرعتش بکنید. حتی سرعتش را می تونید 4 - 5 برابر کنید

maryam9903
شنبه 05 اردیبهشت 1394, 20:57 عصر
آفرین، فقط اگه تونستید یه فکری به حال سرعتش بکنید. حتی سرعتش را می تونید 4 - 5 برابر کنید

ببخشید متوجه منظورتون نشدم

rahnema1
شنبه 05 اردیبهشت 1394, 21:19 عصر
منظور خاصی نداشتم. یعنی سریعتر هم میشه برنامه را نوشت به طوری که سرعتش نسبت به برنامه شما 4 تا 5 برابر بشه
تا میشه باید از مقایسه های اضافی، کپی کردن یا حذف کردن تا میشه پرهیز کرد

maryam9903
شنبه 05 اردیبهشت 1394, 23:23 عصر
منظور خاصی نداشتم. یعنی سریعتر هم میشه برنامه را نوشت به طوری که سرعتش نسبت به برنامه شما 4 تا 5 برابر بشه
تا میشه باید از مقایسه های اضافی، کپی کردن یا حذف کردن تا میشه پرهیز کرد

آها....ممنون
حتما مد نظر قرار میدم....فعلا اوله کارم و خییییلی بی تجربه.تازه شروع کردم به کد زدن تو codeforces
بیشتر اینکه جواب بگیرم برام مهمه .البته فعلا
بازم ممنون بابت راهنماییهاتون