Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Scanner;
- public class tulipas {
- public static int maxMudancas;
- public static int minDestruidas;
- public static void main(String []args){
- Scanner sc = new Scanner(System.in);
- String str= sc.nextLine();
- String arrayStrings[]=str.split("\\s+");
- maxMudancas=new Integer(arrayStrings[0]);
- ArrayList<Integer> ocorrencias = contaOcorrencias(arrayStrings[1]);
- minDestruidas=ocorrencias.size();
- //System.out.println("yo :" + (arrayStrings[1].charAt(0)-'0'));
- funcao(maxMudancas,ocorrencias,0, (arrayStrings[1].charAt(0)-'0'),0);
- funcao(maxMudancas,ocorrencias,1, (arrayStrings[1].charAt(0)-'0'),0);
- System.out.println(minDestruidas);
- }
- public static int funcao(int mudancasLeft, ArrayList<Integer> numerosProcessar,int estado,int estadoString,int destruidas){
- ArrayList<Integer> auxNovosNumeros= new ArrayList<Integer>();
- if (mudancasLeft==0){
- return 0;
- }
- int novoEstadoString;
- if (numerosProcessar.size()==0){
- if (destruidas<minDestruidas){
- minDestruidas=destruidas;
- }
- return 0;
- }
- for(Integer intt : numerosProcessar){
- auxNovosNumeros.add(intt);
- }
- auxNovosNumeros.remove(0);
- if (estadoString==0){
- novoEstadoString=1;
- }
- else {
- novoEstadoString=0;
- }
- int novasMortas=0;
- if (estado==estadoString){
- novasMortas=destruidas;
- if (estado==0){
- funcao(mudancasLeft,auxNovosNumeros,0,novoEstadoString,novasMortas);
- funcao(mudancasLeft-1,auxNovosNumeros,1,novoEstadoString,novasMortas);
- }
- else {
- funcao(mudancasLeft,auxNovosNumeros,1,novoEstadoString,novasMortas);
- funcao(mudancasLeft-1,auxNovosNumeros,0,novoEstadoString,novasMortas);
- }
- }
- else {
- novasMortas=numerosProcessar.get(0)+destruidas;
- if (estado==0){
- funcao(mudancasLeft,auxNovosNumeros,0,novoEstadoString,novasMortas);
- funcao(mudancasLeft-1,auxNovosNumeros,1,novoEstadoString,novasMortas);
- }
- else {
- funcao(mudancasLeft,auxNovosNumeros,1,novoEstadoString,novasMortas);
- funcao(mudancasLeft-1,auxNovosNumeros,0,novoEstadoString,novasMortas);
- }
- }
- return 0;
- }
- public static ArrayList<Integer> contaOcorrencias(String tulipas){
- ArrayList<Integer> ocorrencias = new ArrayList<Integer>();
- int contador=1;
- for(int i=1;i<tulipas.length();i++){
- if(tulipas.charAt(i)==tulipas.charAt(i-1)){
- contador++;
- }
- else{
- ocorrencias.add(contador);
- contador=1;
- }
- }
- ocorrencias.add(contador);
- return ocorrencias;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement