Kant #981 14 октября 2013 http://gagoel-algorithm.blogspot.com/2012/03/longest-increasing-subsequence.html вот там вроде норм расписано много вариантов с разными показателями по времени Если вам совсем нечего делать, можете еще longetst common sequence поизучать. Это был мой супервеселый и суперпонятный первый в жизни курсач Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
rubish #982 14 октября 2013 не думаю что есть вариант проще этого class MaximumIncreasingSequence { int[] Sequence; static Random r = new Random(); int Result = 0; public MaximumIncreasingSequence(int N, int limit) { Sequence = new int[N]; for (int i = 0; i < N; i++) Sequence[i] = r.Next(1, limit); } public string TxtSeq { get { string res = ""; foreach (int s in Sequence) res += s + " "; return res.Trim(); } } public string CountK() { Result = Sequence.Length; for (int i = 0; i < Sequence.Length; i++) CountNext(i, i, 0); return string.Format("Res: {0}", Result); } private void CountNext(int currentIndex, int excludedNumbers, int last) { if (excludedNumbers >= Result) return; if (currentIndex >= Sequence.Length - 1) { // lastitem if (Sequence[currentIndex] <= last) excludedNumbers++; if (excludedNumbers < Result) Result = excludedNumbers; return; } if (Sequence[currentIndex] > last) { CountNext(currentIndex + 1, excludedNumbers, Sequence[currentIndex]); } CountNext(currentIndex + 1, excludedNumbers + 1, last); } } я у тебя тут вообще не вижу перебора никакого. Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #983 14 октября 2013 не думаю что есть вариант проще этого class MaximumIncreasingSequence { int[] Sequence; static Random r = new Random(); int Result = 0; public MaximumIncreasingSequence(int N, int limit) { Sequence = new int[N]; for (int i = 0; i < N; i++) Sequence[i] = r.Next(1, limit); } public string TxtSeq { get { string res = ""; foreach (int s in Sequence) res += s + " "; return res.Trim(); } } public string CountK() { Result = Sequence.Length; for (int i = 0; i < Sequence.Length; i++) CountNext(i, i, 0); return string.Format("Res: {0}", Result); } private void CountNext(int currentIndex, int excludedNumbers, int last) { if (excludedNumbers >= Result) return; if (currentIndex >= Sequence.Length - 1) { // lastitem if (Sequence[currentIndex] <= last) excludedNumbers++; if (excludedNumbers < Result) Result = excludedNumbers; return; } if (Sequence[currentIndex] > last) { CountNext(currentIndex + 1, excludedNumbers, Sequence[currentIndex]); } CountNext(currentIndex + 1, excludedNumbers + 1, last); } } я у тебя тут вообще не вижу перебора никакого.а что это тогда, если не полный перебор всех допустимых возрастающих последовательностей? Поделиться сообщением Ссылка на сообщение
rubish #984 14 октября 2013 как твое решение разруливает такие последовательности? 1, 5, 2 Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #985 14 октября 2013 Ну так открой код и посмотри как Или вот ещё лучше теоретического описание из прошлого постано этот алгоритм слишком прямолинен и будет в говне при хитрой последовательности скажем 1, 2, 20, 3, 4, 5, он не найдёт последовательность 12345, только 1 2 20 или 3 4 5 - и в ответе я получал только тройку нужен какой-то рекурсивный алгоритм, какой-то вариант полного перебора когда оно пытается поочерёдно исключать следующее и далее числа в поиске возможных комбинаций наибольшей последовательности типа такого1, 2, 20, 3 ... // не исключает ничего и в лоб ищет до конца останавливаясь только на меньших последнего числах1, 2, 20, 3 ... // исключает первое число и так же идёт дальше1, 2, 20, 3 ... // исключает первые два1, 2, 20, 3 ... // исключает 1 и 3...1, 2, 20, 3 ... // исключает второе1, 2, 20, 3 ... // исключает 2-3 (первое, втрое = числа после стартового индекса, т.е. по факту второе, третье) Поделиться сообщением Ссылка на сообщение
rubish #986 14 октября 2013 вот по-этому я и говорил о полном переборе Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #987 14 октября 2013 Не беси блядь, создай консольный проект, вкинь туда мой код и заставь его вместо рандомного массива схавать любую заданую тобой последовательность. Тот пост касался первого алгоритма, второй (в последнем оффтопе) этот косяк учитывает 1 2 20 3 4 5 = выдаёт одно вычёркивание Какую именно хитрую последовательность оно не обрабатывает? Поделиться сообщением Ссылка на сообщение
rubish #988 14 октября 2013 да я даже не смотрел твой алгоритм. просто посмотрел, что там переборов нет.ты переменные называешь как мудак, противно читать Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #989 14 октября 2013 currentIndex, Result, last - что с ними не так? Там вся суть алгоритма полного перебора в двух строчках для рекурсии - вызов CountNext если текущее число больше предыдущего как с вычеркиванием этого числа, так и без. Поделиться сообщением Ссылка на сообщение
rubish #990 14 октября 2013 скачай решарпер - увидишь.методы называются не пойми как, локальные. Свойство - вообще пиздец. зачем так делать?приватные поля с большой буквы, рандом почему-то выделен в статичное поле. из названия методов хуй поймешь, что они делают.вместо возвращаемых значений почему-то используются какие-то приватные поля Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #991 14 октября 2013 Потому что я делал это просто так и всё что там было - переделывалось 150 раз. Рандом в статике потому что я гонял эту хуйню по десять раз чтобы увидеть одновременно много результатов. Всё считалось так быстро что я получал 10 идентичных массивов.Свойство - чтоб вытащить текстом эту последовательность и вывести в консоль - вообще похуй на него, он в алгоритме не юзается.CountK - посчитать "К", это из условия задачи (как и N). CountNext - не придумал как лучше назвать.Половина полей были то публичными, то приватными, то внутри метода октуда я их вырезал и тупо пастил в класс.Про возвращаемые значения в чём проблема - Result чтоли? А как я буду хванить то самое минимальное число вычеркиваний? Поделиться сообщением Ссылка на сообщение
Airfol #992 14 октября 2013 (изменено) Как создать массив указателей на функции? Типо вот есть 4 функции, я их хочу вызывать funct[1](arg).Типо массив,но только с функциямичерез typedef в гуголе не понятно вот Изменено 14 октября 2013 пользователем Airfol Поделиться сообщением Ссылка на сообщение
KotZhilkina #993 14 октября 2013 #include <stdio.h> int sum(int a, int b);int subtract(int a, int b);int mul(int a, int b);int div(int a, int b); int (*p[4]) (int x, int y); int main(void){ int result; int i, j, op; p[0] = sum; /* address of sum() */ p[1] = subtract; /* address of subtract() */ p[2] = mul; /* address of mul() */ p[3] = div; /* address of div() */ printf("Enter two numbers: "); scanf("%d %d", &i, &j); printf("0: Add, 1: Subtract, 2: Multiply, 3: Divide\n"); do { printf("Enter number of operation: "); scanf("%d", &op); } while(op<0 || op>3); result = (*p[op]) (i, j); printf("%d", result); return 0;} int sum(int a, int b){ return a + b;} int subtract(int a, int b){ return a - b;} int mul(int a, int b){ return a * b;} int div(int a, int b){ if(b) return a / b; else return 0;} Публикация отключена Поделиться сообщением Ссылка на сообщение
Двапой #994 14 октября 2013 опять рабишь не вникая наезжает Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
rubish #995 14 октября 2013 буду и дальше наезжать не вникая Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #996 14 октября 2013 Лучше вникать не наезжая. Типа там основная рекурсивная функция 10 строк, как же нечитаемо из-за регистра названий методов и переменных, сук пздц... Поделиться сообщением Ссылка на сообщение
Airfol #997 14 октября 2013 #include int sum(int a, int b); int subtract(int a, int b); int mul(int a, int b); int div(int a, int b); int (*p[4]) (int x, int y); int main(void) { int result; int i, j, op; p[0] = sum; /* address of sum() */ p[1] = subtract; /* address of subtract() */ p[2] = mul; /* address of mul() */ p[3] = div; /* address of div() */ printf("Enter two numbers: "); scanf("%d %d", &i, &j); printf("0: Add, 1: Subtract, 2: Multiply, 3: Divide\n"); do { printf("Enter number of operation: "); scanf("%d", &op); } while(op<0 || op>3); result = (*p[op]) (i, j); printf("%d", result); return 0; } int sum(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int div(int a, int b) { if(b) return a / b; else return 0; } Спасибо, пол дня через typedef пытался Поделиться сообщением Ссылка на сообщение
Tinplz #998 14 октября 2013 #include int sum(int a, int b); int subtract(int a, int b); int mul(int a, int b); int div(int a, int b); int (*p[4]) (int x, int y); int main(void) { int result; int i, j, op; p[0] = sum; /* address of sum() */ p[1] = subtract; /* address of subtract() */ p[2] = mul; /* address of mul() */ p[3] = div; /* address of div() */ printf("Enter two numbers: "); scanf("%d %d", &i, &j); printf("0: Add, 1: Subtract, 2: Multiply, 3: Divide\n"); do { printf("Enter number of operation: "); scanf("%d", &op); } while(op<0 || op>3); result = (*p[op]) (i, j); printf("%d", result); return 0; } int sum(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int div(int a, int b) { if(b) return a / b; else return 0; } Спасибо, пол дня через typedef пытался Хз чего ты там мучалтся, все же просто: typedef int (*func)(int x, int y) ; int _tmain(int argc, _TCHAR* argv[]) { vector<func> myFunctions; myFunctions.push_back(Csum); myFunctions.push_back(Csubtract); myFunctions.push_back(Cmul); myFunctions.push_back(Cdiv); for (func f : myFunctions){ cout << f(42,13) << endl; } return 0; } Ну или даже проще так:std::vector<std::function<int (int,int) >> myFunctions2; Поделиться сообщением Ссылка на сообщение
choojoykin #999 14 октября 2013 что за хуйня ебанная не компилится блять ни в какую сука package com.example.fw; import org.testng.Assert; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.NoAlertPresentException; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.Select; import com.example.tests.ContactData; import com.example.tests.GroupData; import com.example.tests.TestBase; public class ApplicationManager { public static WebDriver driver; public static String baseUrl; public static boolean acceptNextAlert = true; private static StringBuffer verificationErrors = new StringBuffer(); public ApplicationManager() { driver = new FirefoxDriver(); baseUrl = "http://localhost/"; driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } public void stop() { driver.quit(); String verificationErrorString = verificationErrors.toString(); if (!"".equals(verificationErrorString)) { Assert.fail(verificationErrorString); } } public void returnToMainPage() { driver.findElement(By.linkText("group page")).click(); } public void submitNewGroup() { driver.findElement(By.name("submit")).click(); } public void initNewGroup() { driver.findElement(By.name("new")).click(); } public void gotoGroupsPages() { driver.findElement(By.linkText("groups")).click(); } public void submitContactCreation() { driver.findElement(By.name("submit")).click(); } public void initNewContactCreation() { driver.findElement(By.linkText("add new")).click(); } public void openMainPage() { driver.get(TestBase.baseUrl + "/addressbookv4.1.4/"); } public void fillGroupForm(TestBase testBase, GroupData group) { driver.findElement(By.name("group_name")).clear(); driver.findElement(By.name("group_name")).sendKeys(group.name); driver.findElement(By.name("group_header")).clear(); driver.findElement(By.name("group_header")).sendKeys(group.header); driver.findElement(By.name("group_footer")).clear(); driver.findElement(By.name("group_footer")).sendKeys(group.footer); } public void fillNewContactForm(TestBase testBase, ContactData contact) { driver.findElement(By.name("firstname")).clear(); driver.findElement(By.name("firstname")).sendKeys(contact.contactname); driver.findElement(By.name("lastname")).clear(); driver.findElement(By.name("lastname")).sendKeys(contact.lastname); driver.findElement(By.name("address")).clear(); driver.findElement(By.name("address")).sendKeys(contact.address); driver.findElement(By.name("home")).clear(); driver.findElement(By.name("home")).sendKeys(contact.home); driver.findElement(By.name("mobile")).clear(); driver.findElement(By.name("mobile")).sendKeys(contact.mobile); driver.findElement(By.name("work")).clear(); driver.findElement(By.name("work")).sendKeys(contact.work); driver.findElement(By.name("email")).clear(); driver.findElement(By.name("email")).sendKeys(contact.email); driver.findElement(By.name("email2")).clear(); driver.findElement(By.name("email2")).sendKeys(contact.email2); new Select(driver.findElement(By.name("bday"))).selectByVisibleText(contact.bday); new Select(driver.findElement(By.name("bmonth"))).selectByVisibleText(contact.bmonth); driver.findElement(By.name("byear")).clear(); driver.findElement(By.name("byear")).sendKeys(contact.byear); new Select(driver.findElement(By.name("new_group"))).selectByVisibleText(contact.new_group); driver.findElement(By.name("address2")).clear(); driver.findElement(By.name("address2")).sendKeys(contact.address2); driver.findElement(By.name("phone2")).clear(); driver.findElement(By.name("phone2")).sendKeys(contact.phone2); } public boolean isElementPresent(By by) { try { driver.findElement(by); return true; } catch (NoSuchElementException e) { return false; } } public boolean isAlertPresent() { try { driver.switchTo().alert(); return true; } catch (NoAlertPresentException e) { return false; } } public String closeAlertAndGetItsText() { try { Alert alert = driver.switchTo().alert(); String alertText = alert.getText(); if (acceptNextAlert) { alert.accept(); } else { alert.dismiss(); } return alertText; } finally { acceptNextAlert = true; } } } эклипса пиздит на driver cannot be resolved or is not a field хотя я блять в самом начале все дрова передал ни мало ни много, а много и мало Поделиться сообщением Ссылка на сообщение
Kant #1000 14 октября 2013 как вариант закрыть\открыть эклипс Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение