Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 13:09   #1
videolord
Пользователь
 
Аватар для videolord
 
Регистрация: 23.02.2011
Сообщений: 28
Печаль динамическое программирование по подстрокам

как то не получается реализовать этот алгоритм
Дана строка из заглавных букв латинского алфавита. Необходимо найти длину наибольшего палиндрома, который можно получить вычеркиванием некоторых букв из данной строки.
алгоритм описан здесь http://habrahabr.ru/blogs/algorithm/113108/
Задача 5.

d[i,j] = d[i+1,j-1] + 1 когда Str[i] == Str[j]
max(d[i,j-1],[i+1,j]) когда Str[i] != Str[j]
videolord вне форума Ответить с цитированием
Старый 06.07.2011, 14:19   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

И в чем собственно вопрос?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 06.07.2011, 14:24   #3
videolord
Пользователь
 
Аватар для videolord
 
Регистрация: 23.02.2011
Сообщений: 28
По умолчанию

уфф сделано

Код:
import java.util.Scanner;
public class charat {
	static Scanner sc=new Scanner(System.in);
	static String s=sc.nextLine();
	static int n=s.length();
	static  int[][] dp=new int[n+1][n+1];

	static void fillMatrix(String s){
	dp[0][0]=1;
	for(int i=1;i<n;i++){
	 for(int j=i-1;j>=0;j--){
	 dp[i][i]=1;
	 int k=i;
	 while(s.charAt(k)!=s.charAt(j))
	 k--;
	 if(s.charAt(i)==s.charAt(k))
		dp[i][j]=dp[i-1][j+1]+2; 
	 else
		 dp[i][j]=Math.max(dp[i-1][j],dp[i][j+1]); 
	 
	 
	 }
	}
	}

public static void main(String[] args) {
fillMatrix(s);
System.out.println(dp[n-1][0]);
 }

}

Последний раз редактировалось Stilet; 07.07.2011 в 08:25.
videolord вне форума Ответить с цитированием
Старый 06.07.2011, 18:07   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

эмм, если у вас Java то зачем вы в С++ полезли?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.07.2011, 22:01   #5
videolord
Пользователь
 
Аватар для videolord
 
Регистрация: 23.02.2011
Сообщений: 28
По умолчанию

сам не знаю
videolord вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое программирование!!! Fuckkiller Microsoft Office Excel 13 04.05.2011 19:03
динамическое программирование stefan0202 Паскаль, Turbo Pascal, PascalABC.NET 3 07.02.2011 22:05
Динамическое программирование Daniya.ru Общие вопросы .NET 2 19.12.2010 11:40
Динамическое программирование joey_ramone Паскаль, Turbo Pascal, PascalABC.NET 0 23.04.2010 13:51
Динамическое программирование. MAKEDON Помощь студентам 6 26.08.2009 14:10