[Logo] Mendo Judge Discussion Board - Forums
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
Messages posted by: StefanStojkovski
Forum Index » Profile for StefanStojkovski » Messages posted by StefanStojkovski
Author Message
Фала многу! Многу лесна задача ама ете не ми текна! И по пат немам учено динамичко решавање но ќе почнам од среда за државниот натпревар.
Се обидувам да ја решам на начин што една низа ќе го помни збирот од сите можни патишта по кои се движат кравите! Направив шема но не знам како да ја направам програмата да се движи по неа. Успеав само да пресметам колку можни патишта постојат 2 на степен n-1.

while(i<=n)
{for(j=1;j<=i;j++)
cin>>a[i][j]; i++;}
p=1;
Тријаголникот претставува матрица

Шемата за n=5 оди вака
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11........................патот по кој се движи кравата
21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22......................... за 5 има 16=2на5-1, а броевите се a[i][j];
31 31 31 31 32 32 32 32 32 32 32 32 33 33 33 33
41 41 42 42 42 42 43 43 42 42 43 43 43 43 44 44
51 52 52 53 52 53 53 54 52 53 53 54 53 54 54 55
= = = = = = = = = = = = = = = =
к1к2к3к4к5к6к7к8к9к10к11к12к13к14к15к16 ...........низата која го пресметува збирот на патот

-...................................
-............+.................... Плусчето е каде ј се зголемило за еден според горната шема(симетрично е и мислев дека кога го најдов ова сум ја решил но не знам
-.....+...........+ .......................да ја напишам) Ако некое ј што се наоѓа погоре од друго се зголеми тогаш сите под него ја добиваат неговата вредност
-.+......+....+....+.......................првата колона и првиот ред немаат плусчиња!!
-.+.+.+.+.+.+.+.+............

Ако некој ја решил вака нека каже бидејки јас не знам многу функции во Ц++ па ова е единствениот начин што ми текна но е многу комплицирано!
Најверојатно има полесен начин и најверојатно ве мрзи да ми ја прегледувате шемата па ако знаете полесен начин уште подобро!

Фала!

Само едно нешто околу оваа програма. Нели се внесува број на програми па за секоја програма време на подготвување па време на извршување. Не ми е јасно која програма ја подготвува прва. Во примерот за 3 програми се почнува од 3-тата, па излага 11.
Еве ја мојата програма. Да не објаснувам ако сте ја решавале само видете го кодот и ќе видите како мислев јас околу горново прашање, но не ми излегува точно освен за неколку.
Ако не ви се гледа кодот, а сте ја решиле само кажете, ве молам и фала.
{
int a[1000],b[1000],c[1000],i,n,j,max,p;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
c[i]=a[i]+b[i];
}
max=c[1];
for(i=1;i<=n;i++)
if(c[i]>max)
{max=c[i];
p=i;}
for(i=1;i<=n;i++)
if(c[i]+a[p]>max && c[i]!=max)
max=c[i]+a[i];
cout<<max;
return EXIT_SUCCESS;
}
Благодарам. Програмата ги даде сите точни решенија.

Сепак прв пат што е програмски јазик дознав во октомври а што е ц++ дознав во фебруари(На школо каде решаваме многу поедноставни задачи). Ако може некој едноставен начин да ми објасни што беше проблемот. Што се однесува на реалните броеви дали сугерираш дека sqrt(8.)*squrt(8.) во мојата програма секогаш ќе дава 8 затоа што squrt(8.) = 2.81...(реален број по defult), па затоа пред squrt го ставаш int за sqrt(8.)*squrt(8.) да дава 4 зато што инт од корен 8 е 2? Ако е така зошто програмата секогаш даваше точни резултаи кога ја тестирав во црната кутија (како и да се вика(ше)).
Исто овој ред не знам што прави?

int int_sqrt(int x)
{
return (int)(round(sqrt(x)));
}

И досега дефинирав променливи само на почеток, па дали за да дефинирам променлива во услов од if ќе треба да е на пр. (int_p<8.) како што е int_sqrt(s), со долната црта и без точки или запирки.
Фала уште еднаш.
Ве молам немојте со бриши system(pause); не ми е прва задача, имам решено околу 30 и не ја праќам со system(pause); извинете што не го избришав овдека.
Направив програма за оваа задача што дава точни решенија, но кога ќе ја испратам ми враќа дека само првото ми е точно т.е. за примерот.
За да се уверам дека ми е точна го спуштив 4-тиот тест случај. Тој е: за инпут 2 и 30 да даде аутпут 14. Мојата програма кога ќе ја пуштам за овие инпути дава 14.
Меѓутоа кога ќе ја испратам, за тест случај четири, вели дека е погрешн резултатот. Не знам што е работата. Правев голема прверка сметајки на лист и секогаш ми се совпаѓа со програмата. Еве ја програмата. На почеток додадов #include <math.h> за да го чита sqrt кое пресметува корен од број. Доколку најдете грешка или знаете зошто ми враќа грешно иако е точно ве молам пишете.


#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;

int main(int argc, char *argv[])
{int p,k,l,m,s,t,i;
cin>>p>>k;
l=0;
for(i=p;i<=k;i++)
{
m=0;t=0;
if (i/2+i/2==i)
while((m<=i/2 && t==0) or (m==0 && t==0))
{s=i-m;
if((sqrt(s)*sqrt(s)==s) && (sqrt(m)*sqrt(m)==m))
{t=1;
l=l+1;}
m++;}
else
{
while((m<i/2 && t==0) or (m==0 && t==0))
{s=i-m;
if((sqrt(s)*sqrt(s)==s) && (sqrt(m)*sqrt(m)==m))
{t=1;
l=l+1;}
m++;}}}
cout><<l;
system("PAUSE";
return EXIT_SUCCESS;
}
 
Forum Index » Profile for StefanStojkovski » Messages posted by StefanStojkovski
Go to:   
Powered by JForum 2.1.8 © JForum Team