[C#] počítadlo patentních klíčů – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[C#] počítadlo patentních klíčů – .NET – Fórum – Programujte.com[C#] počítadlo patentních klíčů – .NET – Fórum – Programujte.com

 

sh00ter0
Newbie
25. 4. 2011   #1
-
0
-

zdravim,

mam za ukol napsat program, ktery pro dany pocet stavitek a stavu v zamku spocita, kolik lze stvorit ruznych klicu. Prikladam zadani

Patentní klíč, jak každý správný chmaták ví, odemyká tak, že tělo klíče projede štěrbinou (se správným profilem) a klíč spodními hrankami (kterými obvykle prořezává kapsy kalhot) zamačkává jednotlivá stavítka. V patentním zámku je K stavítek, které je (každé) možno nastavit do L (různých) poloh. Abychom ale byli schopni klíč zasunout (resp. vytáhnout), dvě po sobě jdoucí stavítka musejí být nastavena nejvýše o jedna jinak (tedy druhé je buďto ve stejné výšce jako předchozí, nebo o jeden zoubek níže, nebo o zoubek výše). Určete, kolik je možno (pro pevně zvolené drážkování) navrhnout různých klíčů (tedy ignorujte možnost, že klíč vůbec není možno do zámku zasunout). Napište program, který načte na vstupu na dvou řádcích dvě (celá) čísla K a L (v tomto pořadí) a určí, kolik je možno postavit různých klíčů do zámků s K stavítky, která je možno (každé) nastavit do L (různých) poloh. Tedy například pro vstup "2" a "3" program vypíše "7", zatímco pro vstup "3" a "2" vyjde hodnota "8". Sice to asi tentokrát nikdo neocení, ale jako obvykle je vstup ukončen aspoň jedním prázdným řádkem (tedy cokoliv za prvními dvěma řádky obsahujícími dvě celá čísla ignorujte)!


Úloha by se měla řešit dynamickým programováním.

Když jsem se nad tím tak zamýšlel, tak jsem došel k nápadu, že pro zámek o N stavítkách by mělo platit, že má 3x více možností, než zámek o N-1 stavítkách (pokud je více než 2 stavy) a poté musím odečíst ještě 2 možnosti (každý hraniční stav má pouze 2 možnosti). Ale jaksi mi toto nefunguje, stvořil jsem toto

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace klice
{
class Program
{
static void Main(string[] args)
{
int k = int.Parse(Console.ReadLine());
int l = int.Parse(Console.ReadLine());

int[] p = new int[k + 1];

p[0] = 0;
p[1] = l;

for (int i = 2; i <= k; i++)
{
int multi;
if (l > 2) multi = 3;
else multi = l;

p[i] = (p[i - 1] * multi) - 2;
}

Console.WriteLine(p[k]);
Console.ReadKey();
}
}
}


Díky za nápady.

Nahlásit jako SPAM
IP: 94.113.85.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 71 hostů

Podobná vlákna

Převrácení klíčů — založil lokem22

Počítadlo wz — založil petr

Pocitadlo — založil homelin

Pocitadlo pristupu — založil SoLi

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý