Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.2 kB
2
Indexable
Never
#include <iostream>
using namespace std;

int len;
char test[11][1000][10];

int ChuyenSangSo(char c[10]) {
	int num = 0;
	for (int i = 0; i < len; i++) {
		num = num * 10 + (c[i] - '0');
	}
	return num;
}

void ChuyenSangChar(char b[10], int i, int j, int m) {
	//char b[10];
	int l = len;
	while (m != 0) {
		char e = m % 10 + '0';
		l--;
		b[l] = e;
		m /= 10;
	}
}

bool kt(int i, int j) {
	for (int x = 0; x < len; x++) {
		if (test[i][j][x] == NULL)
			return false;
	}
	return true;
}

bool CheckTrung(int number[11][1000], int i, int j, int n) {
	for (int y = 0; y < j; y++) {
		if (number[i][y] == n) {
			return false;
		}
	}
	return true;
}


int main() {
	int t;
	cin >> t;
	for (int tc = 1; tc <= t; tc++) {
		char a[10];
		int n;
		len = 0;
		cin >> a >> n;
		for (int i = 0; i < 10; i++) {
			if (a[i] == NULL)
				break;
			else
				len++;
		}


		for (int i = 0; i < 11; i++) {
			for (int j = 0; j < 1000; j++) {
				for (int z = 0; z < 10; z++) {
					test[i][j][z] = NULL;
				}
			}
		}



		for (int i = 0; i < len; i++) {
			test[0][0][i] = a[i];
		}

		int number[11][1000];

		number[0][0] = ChuyenSangSo(a);

		int jj = 0;

		for (int i = 0; i < n; i++) {
			int j = 0;
			jj = 0;
			//cout << i + 1 << endl;
			while (kt(i, j)) {

				char b[10];
				for (int ii = 0; ii < len; ii++) {
					b[ii] = test[i][j][ii];
				}

				for (int x = 0; x < len - 1; x++) {
					for (int y = x + 1; y < len; y++) {
						char temp = b[x];
						b[x] = b[y];
						b[y] = temp;

						int num = ChuyenSangSo(b);


						if (CheckTrung(number, i + 1, jj, num)) {
							//cout << num << endl;

							for (int ii = 0; ii < len; ii++) {
								test[i + 1][jj][ii] = b[ii];
							}

							//cout << test[i + 1][jj] << endl;

							number[i + 1][jj] = num;
							jj++;
						}

						for (int ii = 0; ii < len; ii++) {
							b[ii] = test[i][j][ii];
						}
					}
				}
				j++;
			}
		}

		int max = 0;
		for (int j = 0; j < jj; j++) {
			if (number[n][j] > max) {
				max = number[n][j];
			}
		}
		cout << "Case #" << tc << endl << max << endl;
	}
}