Kirish ma'lumotlari
Birinchi quti tomonlari A1, B1 va C1. Ikkinchi quti tomonlari A2, B2 va C2 musbat sonlar berilgan
Chiquvchi ma’lumotlar
Agar qutilar bir xil bo'lsa, "Qutilar teng" ni chiqaring. Agar birinchi qutini ikkinchisiga qo'yish mumkin bo'lsa, "Birinchi quti ikkinchisidan kichikroq" ni chiqaring. Agar ikkinchi qutini birinchisiga qo'yish mumkin bo'lsa, "Birinchi quti ikkinchisidan kattaroq" ni chiqaring. Aks holda, "Qutilar taqqoslanmaydi" ni chiqaring.
T/r.
|
Kiruvchi ma’lumotlar
|
Chiquvchi ma’lumotlar
|
1
|
1 2 3
3 2 1
|
Qutilar teng
|
2
|
2 2 3
3 2 1
|
Birinchi quti ikkinchisidan kattaroqdir
|
3
|
2 2 3
3 2 3
|
Birinchi quti ikkinchisidan kichikroq
|
4
|
3 4 5
2 4 6
|
Qutilar taqqoslanmaydi
|
Algoritmni amalga oshirish. (dastur)
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int a,b,c, a2,b2,c2;
int a1[3], b1[3];
for(int i=0; i<3; i++)
{
cin>>a1[i];
}
for(int i=0; i<3; i++)
{
cin>>b1[i];
}
sort(a1, a1+3);
sort(b1, b1+3);
int t1=0, t2=0, t3=0;
for(int i=0; i<3; i++)
{
if (a1[i]==b1[i]) t1++;
if (a1[i]>b1[i]) t2++;
if (a1[i]
}
if(t1==3) cout<<"Boxes are equal";
else
if((t2+t1)==3) cout<<"The first box is larger than the second one";
else
if((t3+t1)==3) cout<<"The first box is smaller than the second one";
else
cout<<"Boxes are incomparable";
return 0;
}
Dasturni tekshirish (Yechim olish)
Savol: Quyidagi ketma-ketlik bo’yicha yig’indini aniqlang.
S=1+1+2+1+2+3+1+2+3+4+….1+2+3+…n (n<=1000000)
Kiruvchi ma’lumotlar: n soni kiritiladi
Chiquvchi ma’lumotlar: S yig’inchi hisoblanadi
№
|
Kiruvchi
|
Chiquvchi
|
1
|
1
|
1
|
2
|
4
|
20
|
Algoritmni amalga oshirish. (dastur)
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int n,summ=0,summ2=0;
cout<<"n:= ";cin>>n;
for(int i=0;i<=n;i++)
{
summ+=i;
summ2+=summ;
}
cout<<"S:= "<return 0;
}
Dasturni tekshirish (Yechim olish)
Tovada bir vaqtning o’zida k ta kotletni qovurish mumkin. kotletning bir tomonini pishirish uchun uni uzluksiz m minut qovurish kerak. N ta kotletni qovurish uchun eng qisqa vaqtni aniqlang k>n
Kiruvchi ma’lumotlar: 30000 dan oshmagan k,m,n butun sonlar kiritiladi
Chiquvchi ma’lumot: kotletlarni qovurish uchun minimal vaqt (minutda) chiqariladi.
№
|
Kiruvchi
|
Chiquvchi
|
1
|
1 1 1
|
2
|
2
|
2 2 1
|
4
|
TATU Samarqand filiali talabalari shahar bo’ylab avtobusda sayohat qilishni rejalashtirdi. Talabalar ko’p bo’lganligi uchun ular 437 sm li 2 qavatli avtobus buyurtma qilishdi. Shahardagi barcha ko’priklardan ularning avtobusi o’ta olish muammosi paydo bo’ldi. Ularda barcha ko’priklarning balandligi ma’lumoti bor. Avtobus nechta ko’prikda o’ta olmasligini aniqlash algoritmini va dasturini tuzing.
Kiruvchi ma’lumotlar: birinchi satrda n ko’priklar soni. Ikkinchi satrda ularning uzunliklari berilgan.
Chiquvchi ma’lumotlar: nechta ko’prikdan o’ta olmasligini aniqlang. Agar bunday ko’priklar bo’lmasa. “NO” yozuvini chiqaring
T/r.
|
Kiruvchi
|
Chiquvchi
|
1
|
1
763
|
NO
|
2
|
3
763 245 113
|
2 ta ko’prik
|
3
|
1
437
|
1 ta ko’prik
|
Algoritmni amalga oshirish. (dastur)
#include
using namespace std;
int main()
{
int n,qadam=0;
cout<<"Ko'priklar sonini kiriting: ";cin>>n;
int size[n];
cout<<"Ularning uzunliklarini kiriting: ";
for(int i=0;i
{
cin>>size[i];//son kiritish
}
for(int j=0;j
{
if(size[j]<=437)//nechta ko’prikdan o’ta olishini hisoblash
qadam++;
}
if(qadam==0)
cout<<"NO"<
else
cout<
return 0;
}
Dasturni tekshirish (Yechim olish)
XULOSA
Asosiy mavzu - hisoblash muammolarining samarali algoritmlarini izlash. Ushbu umumiylik darajasida kompyuterni hisoblashning butun sohasi ushbu mavzu bilan bog'liq bo'lib tuyuladi; bizning yondashuvimiz boshqalardan qanday farq qiladi? Algoritmlarni ishlab chiqishda umumiy mavzular va loyihalash tamoyillarini aniqlashga harakat qilamiz. Bizni samarali algoritmlarni loyihalashning asosiy usullarini minimal ma'lumot bilan namoyish etuvchi paradigmatik masalalar va usullar qiziqtiradi.
Hisoblash qobiliyati Ko'plab muammolarda uchraydigan yana bir xususiyat - bu ularning asosan diskretligi. Ko'plab muammolarda uchraydigan yana bir xususiyat-bu ularning asosiy ajralib turishi. Boshqacha qilib aytganda, bu shunday masalalarki, ularda yechim kombinatorial variantlarning keng to'plamidan qidirib topiladi; maqsad aniq belgilangan shartlarni qanoatlantiradigan echimni samarali topishdir.
Hisoblash samaradorligi tushunchasini aniqlash uchun, biz birinchi navbatda ish vaqtining samaradorligiga e'tibor qaratamiz: algoritmlar tez ishlashi kerak. Ammo algoritmlar boshqa resursrlardan foydalanish nuqtai nazaridan ham samarali bo'lishi mumkinligini tushunish muhimdir. Xususan, algoritm tomonidan ishlatilinadigan xotira miqdori ham samaradorlikning muhim jixati bo'lishi mumkin.
Algoritm samaradorligi.
(1)T: algoritm samarali deb ataladi agar real kirish ma'lumotlari uchun u tezkor amalga oshirilsa.
(2)T: algoritm samarali deb ataladi agar u sifatli bajarilishni “to’liq qidirish”(полнiy перебор)ga nisbatan tezroq ta'minlasa.
"To'liq qidirish" usuliga qaraganda ancha yaxshi ishlashni ta'minlaydigan algoritmlar, deyarli har doim qimmatli evristik g'oyani o'z ichiga oladi, buning natijasida ushbu yaxshilanishga erishiladi; Bundan tashqari, ular ko'rib chiqilayotgan masalaning ichki tuzilishi va hisoblash qobiliyati haqida foydali ma'lumotlarni taqdim etadilar.
Polinomial vaqt samaradorlik ko'rsatkichi sifatida
Tabiiy kombinatorial masalalarda qidirish vaqti, kirish ma'lumotlari N hajmiga nisbatan eksponensional o'sishga moyildir; agar o'lcham bittaga ko'paysa, unda imkoniyatlar xajmi bir necha marta ko'payadi. Bunday masalalarni yechish uchun yaxshi algoritm yanada samarali miqyoslash modeliga ega bo'lishi kerak; kirish ma'lumotlarining kattalashib borishi bilan o’zgarmas ko’paytuvchiga(aytaylik, ikki baravar) oshishi bilan algoritmning bajarilish vaqti ham qandaydir o’zgarmas S ko’paytuvchiga ko'payishi kerak.
Do'stlaringiz bilan baham: |