Egy c programozózó segit elkésziteni ezt a nem túl egyszerü programot?
A feladat:
Jani egy olyan játékkal játszik amelyk akkor engedi tovább a következő szintre, ha egy robot, amelyk az 1-es sorban elhelyez eljut az n-edik sorra úgy, hogy közben a 2,3,...,n sorból valamelyk cellára lép. A játék tartalmaz egy n sorból és m oszlopból álló téglalap alakú területet, amelyen a robot mozoghat. Mindegyik [i],[j] cella egy c[i][j] természetes számot tartalmaz. Tudjuk azt, hogy ha robot az [i,j] pozicioban all és az energiája szigoruan pozitiv, akkor elléphet az [i+1,j-1],[i+1,j] vagy [i+1,j+1] valamelykébe - persze csak akkor, ha az adott poziciok léteznek. Az [i1,j1] pozicióból az [i2,j2], pozicioba valo eljutashoz a robot az energiajbol elveszit c[i1,j1]-c[i2,j2] egységet.
Követelmények
Irjatok programot, amelyk Jani számára meghatározza az összes olyan kezdőpoziciót az 1-es sorban, amelyekből kiindulva szigoruan pozitiv energiaértékel lehet eljutni az n-edik sorba, hogy a játék következő szintjére kerülhessen. Ha egyetlen olyan utvonal sem létezik, amelyen az n-dik sorba szigoruan pozitiv energiaértékel el lehet jutni, akkor a -1 értéket kell irni megoldásnak.
Bemeneti adatok
A robot.in állomány tartalma:
-1-es sorban, szóközel egymástól elválasztva a p,n és m számok, a jelentésük pedig az 1-es sorban a robot energiájának értéke, illetve a játéktábla sorainak és oszlopainak a száma.
-a következő n sorban pedig egymástól szóközel elválasztva m szám található, a játéktábla c[i,j] cellájának értékei.
Kimineti adatok
A robot.out kimeneti állomány tartalmazza, növekvő sorrendben, egymástól szóközel elválasztva az első sor azon oszlopsorszámait, ahova Jani elhelyezheti a robotot úgy, hogy az n-edik sorba szigoruan pozitiv energiaértékel jusson el.
Megkötések és Pontositások
*A bemeneti állomanyan lévő adatok term. számok
*0<p<=30000
1<=n<=200,1<=m<=200
0<=c[i,j]<=30000
Példa
robot.in tartalma:
100 4 4
10 80 60 90
70 190 110 50
100 150 280 60
135 135 260 100
robot.out tartalma:
2 3 4
Magyarázat
Az 1. sor 2,3 vagy 4. oszlopábol kiindulva a robot az n-edik sorba egy szigoruan pozitiv energiaértékel juthat el.
Példa 2
robot.in tart:
20 5 4
10 30 20 50
20 20 20 50
10 40 50 100
20 20 30 100
50 40 20 70
robot.out tartalma:
-1
Magyarázat
Az 1-es sorból bármely oszlopból is indulna, a robot nem tud eljutni szigoruan pozitiv energiaértékel.
Jelenleg annyit csináltam, hogy feltöltöttem a robot.in-t n sorú és m oszlopú mátrixal. Csak a forditoprogram ezt a hibajelzest kuldte vissza 7 C:\Documents and Settings\Black In\My Documents\robot.cpp cannot convert `FILE*' to `const char*' for argument `1' to `FILE* fopen(const char*, const char*)'
A forráskód amit eddig csináltam.
#include<stdio.h>
#include<conio.h>
int i=0,j=0,m,n,p,c[200][200];
FILE *f,*g;
int main()
{
f=fopen(f,"robot.in","r");
g=fopen(g,"robot.out","w");
fscanf(f,"%d",&p);
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
fclose(f);
printf("Toltsd fel a jatektablat ahol a robot mozoghat");
f=fopen(f,"robot.in","w");
fprintf(f,"\n");
for(i;i<n;i++)
{
for(j;j<m;j++)
{
printf("c[%d][%d]=",i,j);
scanf("%d",c[i][j]);
if(c[i][j]==feof(f)-1)
fprintf(f,"%d",c[i][j]);
else
fprintf(f,"%d ",c[i][j]);
if(i==i++)
fprintf(f,"\n");
}
}
fclose(f);
fclose(g);
getch();
}
Ez egy elég nagy témakör, érdemes lenne beleásnod magad a mesterséges intelligencián belül a gráf és fa struktúrák bejárásába, útkeresésbe, kereső algoritmusokba, stb...
Pl.
www.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2009/podobni_katalin.pdf
Vagy gugliba: útkereső algoritmusok
Talán most jó lesz:
www.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2009/podobni_katalin.pdf
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!