- Android alkalmazások - szoftver kibeszélő topik
- Megérkeztek a Xiaomi 15T sorozatának telefonjai Magyarországra
- Google Pixel topik
- iPhone topik
- Apple iPhone 17 - alap
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Ilyen lesz a Galaxy S26 Ultra
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Apple iPhone 17 Pro Max – fennsík
- Végre egy tényleg jó Duotts bringa! - E29 teszt
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
jattila48 #3116 üzenetére
Hát, ez az algoritmus nem valami jó. Ugye mindig olyan számot hagytam el a sorozatból (pontosabban az első ilyet), amivel a legtöbb még ép mintasorozatot rontom el. Most egy kicsit módosítottam az algoritmuson, és az első ép mintasorozatból hagyom el azt az elemet, ami a legtöbb mintasorozatot rontja el. Ennek megfelelően a módosított forráskód:
#include <Windows.h>
#include <stdio.h>
int main(int argc,char *argv[])
{
if(argc<3){
printf("Hasznalata: mintat_gyomlal <a gyomlalando sorozat hossza> <minta elemek 1... novekvoleg>");
exit(1);
}
int mintahossz=argc-2,sorozathossz=atoi(argv[1]);
auto minta=new int[mintahossz];
for(int i=0;i<mintahossz;++i){
minta[i]=atoi(argv[i+2]);
}
int minta_terjedelem=minta[mintahossz-1];
auto sorozat=new int[sorozathossz];
for(int i=0;i<sorozathossz;++i){
sorozat[i]=0;
}
for(int i=0;i<=sorozathossz-minta_terjedelem;++i){
for(int j=0;j<mintahossz;++j){
++sorozat[minta[j]+i-1]; //a tomb kezdeti feltotlese. az i.-edik elem azt jelzi, hogy az i+1 szam hany mintasorozatban szerepel
}
}
printf("A sorozatbol kihuzando szamok: ");
int nkihuzando=0;
while(1){
int kihuzando,max=0;
/*
//megkeressuk a legtobb mintasorozatban szereplo szamot, ez lesz a kihuzando+1 (a kihuzando indexu, mivel 0-val kezdodik az indexeles)
for(int i=0;i<sorozathossz;++i){
if(sorozat[i]>max){
kihuzando=i;
max=sorozat[i];
}
}
*/
//modositas: az elso ep mintasorozatbol keressuk ki a legtobb mintasorozatot elronto elemet
int i;
for(i=0;i<sorozathossz && sorozat[i]==0;++i);
if(i==sorozathossz)break;
for(int j=0;j<mintahossz;++j){
int n=i+minta[j]-1;
if(sorozat[n]>max){
kihuzando=n;
max=sorozat[n];
}
}
if(max==0)break;
printf("%d ",kihuzando+1);
++nkihuzando;
//A kihuzott szam utan a sorozat tomb elemeit csokkentjuk, hogy tovabbra is azt jelezze, a megmaradt ep mintasorozatok kozul hanyban szerepel az adott szam
for(int i=0;i<mintahossz;++i){
int n=kihuzando-minta[i];
for(int j=0;j<mintahossz;++j){
int k=minta[j]+n;
if(k>=0 && k<sorozathossz && sorozat[k]>0){
--sorozat[k];
}
}
}
}
printf("\r\nOsszesen %d db.",nkihuzando);
delete[] minta;
delete[] sorozat;
}A végén kiírom, hogy hány elemet hagytam el. Valamivel jobb eredményt ad mint az előző, de szerintem ez is távol áll az optimálistól.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mibe tegyem a megtakarításaimat?
- Gyúrósok ide!
- Android alkalmazások - szoftver kibeszélő topik
- AMD Navi Radeon™ RX 9xxx sorozat
- Debrecen és környéke adok-veszek-beszélgetek
- Gumi és felni topik
- Megérkeztek a Xiaomi 15T sorozatának telefonjai Magyarországra
- Milyen billentyűzetet vegyek?
- League of Legends
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- További aktív témák...
- Apple MacBook A1278 (late 2009) notebook olcsón !
- P16 Gen2 16" QHD+ IPS i7-14700HX RTX 3500 Ada 32GB 1TB NVMe ujjlolv IR kam gar
- Apple iPhone 16 Pro Max 256GB
- HAVN HS 420 PC ház, Midi-Tower, E-ATX, edzett üveg - fekete
- Új, bontatlan, iPhone 17 Pro Max gyárilag kártya-független, apple világgaranciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3049, 94% Akkumulátor
- ÚJ HP OmniBook Ultra Flip 14"OLED 2,8 K 120Hz - Ultra 7 256V - 16GB - 1TB - 2,5 év gari - MAGYAR
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Zebra ZP505 EPL hőpapíros címkenyomtató
- Eredeti Lenovo 230W töltők - 4X20Z83995
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest