Algoritmo simple de JS

1. Escriba una función en JavaScript, ingrese el tipo int y devuelva la cadena después de invertir el entero. Por ejemplo, ingrese el entero 1234 y devuelva la cadena "4321". Se requiere el uso de llamadas a funciones recursivas, no variables globales. La función de entrada debe tener un solo parámetro y debe devolver una cadena.

function reverseInt(num) {
  if (num < 10) {
    return num;
  }
  var remainder = num % 10;
  var result = parseInt(num / 10);
  console.log(result, remainder);
  return remainder.toString() + reverseInt(result);
}

En segundo lugar, tiene tres tipos de monedas, cada una con un valor nominal de 2 yuanes, 5 yuanes y 7 yuanes. Cada tipo de moneda es suficiente. Cuesta 27 yuanes comprar un libro. ¿Cómo pagar con la combinación mínima de monedas sin que la otra parte busque dinero?

var A = [2, 5, 7];
var M = 27;
function coinCange(A, M) {
  var f = new Array(M + 1);
  var n = A.length;

  f[0] = 0;
  for (var i = 1; i <= M; i++) {
    f[i] = Infinity;
    for (var j = 0; j < n; j++) {
      if (i >= A[j] && f[i - A[j]] !== Infinity) {
        f[i] = Math.min(f[i - A[j]] + 1, f[i]);
      }
    }
  }

  if (f[M] == Infinity) {
    f[M] = -1;
  }

  return f[M];
}

console.log('最少组合', coinCange(A, 1));
console.log('最少组合', coinCange(A, 2));
console.log('最少组合', coinCange(A, 5));
console.log('最少组合', coinCange(A, 7));
console.log('最少组合', coinCange(A, 27));

Tercero, buscar la programación más dinámica.

一、动态规划组成部分:
    1、确定状态
       最后一步(最优策略中使用的最后一枚硬币A)
       化成子问题(最少的硬币拼出更小的面值27-A)
    2、转移方程
       f[X] = min{f[X-2]+1, f[X-5]+1, f[X-7]+1}
    3、初始化条件和边界情况
       f[0] = 0, 如果不能拼出Y,f[Y]=正无穷
    4、计算顺序
       f[0], f[1], f[2], ...
二、消除冗余,加速计算

4. Dada una cuadrícula de m filas yn columnas, hay un robot que comienza en la esquina superior izquierda (0,0), y cada paso puede ir hacia abajo o hacia la derecha. Pregunte cuántas formas diferentes de ir a la esquina inferior derecha.

function uniquePaths(m, n){
  var f = [];
  for(var i = 0; i < m; i++){
    f[i] = new Array();
    for(var j = 0; j < n; j++){
      if(i==0 || j==0){
        f[i][j] = 1;
      }else{
        f[i][j] = f[i - 1][j] + f[i][j - 1];
      }
    }
  }
  return f[m-1][n-1];
}

console.log('共有', uniquePaths(3, 4), '种方式');
console.log('共有', uniquePaths(1, 1), '种方式');
console.log('共有', uniquePaths(2, 2), '种方式');

 

Publicado 35 artículos originales · ganado elogios 1 · vistas 6718

Supongo que te gusta

Origin blog.csdn.net/qq_36162529/article/details/105178751
Recomendado
Clasificación