Advertisement
Guest User

Untitled

a guest
Mar 13th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3.  
  4. public class tulipas {
  5. public static int maxMudancas;
  6. public static int minDestruidas;
  7. public static void main(String []args){
  8.  
  9. Scanner sc = new Scanner(System.in);
  10. String str= sc.nextLine();
  11.  
  12. String arrayStrings[]=str.split("\\s+");
  13.  
  14.  
  15. maxMudancas=new Integer(arrayStrings[0]);
  16.  
  17. ArrayList<Integer> ocorrencias = contaOcorrencias(arrayStrings[1]);
  18. minDestruidas=ocorrencias.size();
  19. //System.out.println("yo :" + (arrayStrings[1].charAt(0)-'0'));
  20. funcao(maxMudancas,ocorrencias,0, (arrayStrings[1].charAt(0)-'0'),0);
  21. funcao(maxMudancas,ocorrencias,1, (arrayStrings[1].charAt(0)-'0'),0);
  22. System.out.println(minDestruidas);
  23. }
  24. public static int funcao(int mudancasLeft, ArrayList<Integer> numerosProcessar,int estado,int estadoString,int destruidas){
  25.  
  26. ArrayList<Integer> auxNovosNumeros= new ArrayList<Integer>();
  27.  
  28. if (mudancasLeft==0){
  29. return 0;
  30. }
  31.  
  32. int novoEstadoString;
  33. if (numerosProcessar.size()==0){
  34. if (destruidas<minDestruidas){
  35. minDestruidas=destruidas;
  36. }
  37. return 0;
  38. }
  39. for(Integer intt : numerosProcessar){
  40. auxNovosNumeros.add(intt);
  41. }
  42. auxNovosNumeros.remove(0);
  43.  
  44. if (estadoString==0){
  45. novoEstadoString=1;
  46. }
  47. else {
  48. novoEstadoString=0;
  49. }
  50.  
  51.  
  52. int novasMortas=0;
  53.  
  54. if (estado==estadoString){
  55. novasMortas=destruidas;
  56.  
  57. if (estado==0){
  58. funcao(mudancasLeft,auxNovosNumeros,0,novoEstadoString,novasMortas);
  59. funcao(mudancasLeft-1,auxNovosNumeros,1,novoEstadoString,novasMortas);
  60. }
  61. else {
  62. funcao(mudancasLeft,auxNovosNumeros,1,novoEstadoString,novasMortas);
  63. funcao(mudancasLeft-1,auxNovosNumeros,0,novoEstadoString,novasMortas);
  64. }
  65.  
  66.  
  67. }
  68. else {
  69. novasMortas=numerosProcessar.get(0)+destruidas;
  70.  
  71. if (estado==0){
  72. funcao(mudancasLeft,auxNovosNumeros,0,novoEstadoString,novasMortas);
  73. funcao(mudancasLeft-1,auxNovosNumeros,1,novoEstadoString,novasMortas);
  74. }
  75. else {
  76. funcao(mudancasLeft,auxNovosNumeros,1,novoEstadoString,novasMortas);
  77. funcao(mudancasLeft-1,auxNovosNumeros,0,novoEstadoString,novasMortas);
  78. }
  79.  
  80. }
  81.  
  82. return 0;
  83. }
  84. public static ArrayList<Integer> contaOcorrencias(String tulipas){
  85. ArrayList<Integer> ocorrencias = new ArrayList<Integer>();
  86. int contador=1;
  87. for(int i=1;i<tulipas.length();i++){
  88. if(tulipas.charAt(i)==tulipas.charAt(i-1)){
  89. contador++;
  90. }
  91. else{
  92. ocorrencias.add(contador);
  93. contador=1;
  94. }
  95. }
  96. ocorrencias.add(contador);
  97. return ocorrencias;
  98. }
  99.  
  100.  
  101.  
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement