Portál AbcLinuxu, 8. května 2025 22:18

Dotaz: reseni jedne ulohy v KSP-Z

Bundas avatar 17.1.2014 20:31 Bundas | skóre: 14 | Pardubice
reseni jedne ulohy v KSP-Z
Přečteno: 326×
Odpovědět | Admin
Zdravim. Predem dodavam, ze tato serie jiz byla vyresena a jiz neni mozne odevzdavat a ja nejsem schopen vydrzet to cekani na spravne reseni, tkze to dam sem.

http://ksp.mff.cuni.cz/z/ulohy/26/zadani1.html#task1

jak byste to vyresili Vy? V jazyce C a nebo sem aspon dejte pseudoKod

diky za pomoc
Abe the Messiah has come.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.1.2014 20:50 MadCatX
Rozbalit Rozbalit vše Re: reseni jedne ulohy v KSP-Z
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pseudokóde se mi teď nechce vymýšlet, ale stačí:
- Číst vstup řádek po řádku - Zapamatovat si druhý znak na řádku n - Porovnat tento znak s prvním znakem na řádce n+1 - Pokud jsou znaky stejné, vznikne nový úsek - A takhle pro všechny řádky
martin-ux avatar 18.1.2014 16:09 martin-ux | skóre: 18 | Bratislava
Rozbalit Rozbalit vše Re: reseni jedne ulohy v KSP-Z
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
kedze mi pocasie narusilo vikendove plany, tak som sa pre tu srandu na to pozrel. vid moj kod v prilohe. cita to data z ./magnets.in.
..when you do things right, people won't be sure you've done anything at all..
martin-ux avatar 18.1.2014 16:44 martin-ux | skóre: 18 | Bratislava
Rozbalit Rozbalit vše Re: reseni jedne ulohy v KSP-Z
aha, len som si vsimol, ze som zle pochopil zadanie :) myslel som si, ze sa pytaju na pocet spojeni. oni sa pytaju na pocet oddelenych casti. tak mala zmena v hlavnom loope:
    int groups = 0;
	/* whichever comes first */
	while ( (i < magnets) && (!feof(fp)) )
	{
		fgets(buf, BUFMAX, fp);
		i++;

		/* input validation */
		if ( ((buf[0] == '+') && (buf[1] == '-')) || ( (buf[0] == '-') && (buf[1] == '+')) ) {
			/* first magnet in queue */
			if (last_pole == 'x') {
				last_pole = buf[1];
				groups = 1;
				continue;
			}

			if (buf[0] == last_pole) {
				groups++;
			}
			last_pole = buf[1];
		}
		else {
			fprintf (stderr, "ERROR: invalid entry! Skipping this line.. \n");
			continue;
		}
	}
    fprintf (stdout, "%d\n", groups);
..when you do things right, people won't be sure you've done anything at all..
18.1.2014 18:10 s
Rozbalit Rozbalit vše Re: reseni jedne ulohy v KSP-Z
Odpovědět | | Sbalit | Link | Blokovat | Admin
int
main (void)
{
  int n, res = 1;
  char x, y, yprev;

  if (scanf("%d", &n) != 1)
    goto err;

  if (scanf(" %c%c", &x, &yprev) != 2)
    goto err;

  for (; --n; yprev = y)
    {   
      if (scanf(" %c%c", &x, &y) != 2)
        goto err;
      if (yprev != y)
        res++;
    }   

  printf("%d\n", res);
  return EXIT_SUCCESS;

err:
  puts("Invalid input");
  return EXIT_FAILURE;
}
24.1.2014 16:11 dword
Rozbalit Rozbalit vše Re: reseni jedne ulohy v KSP-Z
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
Trosku pozde, ale tez jsem si to zkusil :) V zasade je to totozne s resenim ostatnich, ale rozdelil jsem to na vice funkci a o to jednoduseji se pak psal main().

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.