Итак, у меня есть этот код сейчас, и на входе у меня есть в порядке возрастания буквы моего имени «ahimrsu». Мне нужно показать правильный номер для «марихуа» из всех комбинаций, которые должны быть 2170. На данный момент это только показывает ahimrsu, ahimrus, ahimsru, ahimsur, ahimurs, ahimusr, ahirmus, ahirmsu .... и т. Д. Как я могу сделать это?Java-перестановка alghorithm
<!DOCTYPE HTML>
<html>
<head>
<!--Script Function Start Here-->
<script type="text/javascript">
function perms(data) {
if (!(data instanceof Array)) {
throw new TypeError("input data must be an Array");
}
data = data.slice(); // make a copy
var permutations = [],
stack = [];
function doPerm() {
if (data.length == 0) {
permutations.push(stack.slice());
}
for (var i = 0; i < data.length; i++) {
var x = data.splice(i, 1);
stack.push(x);
doPerm();
stack.pop();
data.splice(i, 0, x);
}
}
doPerm();
return permutations;
}
var input = "ahimrsu".split('');
var result = perms(input);
for (var i = 0; i < result.length; i++) {
result[i] = result[i].join('');
}
console.log(result);
</script>
<!--Header start here-->
</head>
<body>
<!--Script Result-->
<script type="text/javascript">
document.write(result);
</script>
</body>
</html>
Что вы сделали до сих пор? – ToYonos
Я рекомендую вам прочитать об изменениях и перестановках в целом. – JBA
Формула 'factorial (str.length)'. – dfsq