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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2012, 12:11   #1
Amet13
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию Алгоритм решения задачи

Помогите пожалуйста составить алгоритм к задаче (java). Размещение с повторениями и без. По исходному коду.
Код:
import java.util.*;
public class End {
    static int i = 1;
    static ArrayList<String> fullBrute = new ArrayList<String>();
    static void print(String s, int n, StringBuffer res) {
    	if (n == 0) {
    		System.out.println("#"+i+": "+res.toString());
                i++;
        }
    	else
    		for (int i = 0; i < s.length(); i++){
    			String news = s.substring(0, i) + s.substring(i + 1, s.length());
    			String simb = s.substring(i, i + 1);
    			print(news, n - 1, (new StringBuffer(res)).append(simb));
    		}
    }
	
	public static void brute(String l, int n){
    	print(l, n, new StringBuffer());
    }
    public static void main(String[] args) {
        System.out.println("1. Введите в первой строке элементы размещений, например(123 или ABC)");         
        System.out.println("2. Введите во второй строке количество зарезервированных позиций, например(3)");
        int k;
        String n;
        Scanner in = new Scanner(System.in);
        n = in.next();
        k = in.nextInt();
        bruteOld(String.valueOf(n), k);
        System.out.println("Полученные размещения с повторениями:");
        for (int i = 0; i <= fullBrute.size()-1; i++){
            System.out.println("#"+i+": "+fullBrute.get(i));
        }
        System.out.println("Полученные размещения без повторений:");
        brute(n,k);
    }
    private static void bruteOld( String элементы_размещения, int количество ) { 
       bruteOld( элементы_размещения, количество, new StringBuffer () );
     }
    private static void bruteOld (String элементы_размещения, int количество, StringBuffer output) {
         if (количество <= 0){
             fullBrute.add(output.toString());
          }
          else{           
              for (int i = 0; i < элементы_размещения.length(); i++){               
                  output.append (элементы_размещения.charAt(i));
                  bruteOld (элементы_размещения, количество - 1, output);
                  output.deleteCharAt (output.length() - 1); 
              }
          }
     }
}
Amet13 вне форума Ответить с цитированием
Старый 21.04.2012, 13:16   #2
Amet13
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию

помогите пож-ста
Amet13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каков алгоритм решения задачи? NeoMurderer Общие вопросы C/C++ 3 16.03.2012 21:45
Алгоритм решения задачи snpccvs Помощь студентам 8 13.02.2012 22:50
Нужен алгоритм решения задачи!!!!!! Катя21 Помощь студентам 2 03.01.2012 13:14
Алгоритм решения задачи на графы в С++ Fiamma Помощь студентам 6 06.11.2011 00:11
Открыт ли алгоритм для решения этой задачи? Ru_DoLF Помощь студентам 0 19.03.2011 20:17