Hirdetés
- Maduro szerint venezuelai gyerekek gyártják majd az NVIDIA chipjeit
- OLED TV topic
- Kisétvágyú Radeon RX 9060 XT-t hozott az AMD
- Házimozi belépő szinten
- Bluetooth hangszórók
- Kormányok / autós szimulátorok topikja
- Androidos tablet topic
- OLED monitor topic
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- 5.1, 7.1 és gamer fejhallgatók
Ú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!
- Új AKRACING CORE EX gamer szék
- Latitude 5520 27% 15.6" FHD IPS érintő i7-1185G7 16GB 256GB NVMe ujjlolv IR kam gar
- Lenovo Thinkpad T14 Gen3 14" FHD+ IPS i7-1265U 16GB 512GB NVMe gar
- Gamer PC-Ryzen 9 7800X3D+RX 9070 XT+32GB DDR5 +1 TB SSD+1000W GOLD +240 AIO/ Beszámítás
- Thinkpad P1 Gen5 16" 4K+ IPS i7-12800H RTX A4500 32GB 1TB NVMe ujjlolv IR kam gar
- Jawbone Up okoskarkötő, aktivitásmérő
- HP 200W töltők (19.5V 10.3A) kis kék, kerek, 4.5x3.0mm, 928429-002
- GYÖNYÖRŰ iPhone 15 Plus 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3355, 100% Akkumulátor
- BESZÁMÍTÁS! ASUS H510M i5 11400F 16GB DDR4 512GB SSD GTX 1060 6GB Zalman T4 Plus DeepCool 400W
- GYÖNYÖRŰ iPhone 14 Pro 128GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


