Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

BCNEPER - Hoán vị kế tiếp

Trong bài này, bạn hãy viết chương trình nhận vào một chuỗi (có thể khá dài) các ký tự số và đưa ra màn hình hoán vị kế tiếp của các ký tự số đó (với ý nghĩa là hoán vị có giá trị lớn hơn tiếp theo nếu ta coi chuỗi đó là một giá trị số nguyên).

Chú ý: Các ký tự số trong dãy có thể trùng nhau.

Ví dụ:

123 -> 132

279134399742 -> 279134423799  

Cũng có trường hợp sẽ không thể có hoán vị kế tiếp. Ví dụ như khi đầu vào là chuỗi 987.  

Dữ liệu vào

Dòng đầu tiên ghi số nguyên  t là số bộ test (1 ≤ t ≤ 1000).  Mỗi bộ test có một dòng, đầu tiên là số thứ tự bộ test, một dấu cách, sau đó là chuỗi các ký tự số, tối đa 80 phần tử.  

Dữ liệu ra

Với mỗi bộ test hãy đưa ra một dòng gồm thứ tự bộ test, một dấu cách, tiếp theo đó là hoán vị kế tiếp hoặc chuỗi “BIGGEST” nếu không có hoán vị kế tiếp. 

Example

Input:

3

1 123

2 279134399742

3 987 Output:

1 132

2 279134423799

3 BIGGEST


ID RESULT TIME
code...



Được gửi lên bởi:adm
Ngày:2011-10-19
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:ASM32-GCC ASM32 MAWK BC C CSHARP C++ 4.3.2 CPP CPP14 COFFEE LISP sbcl DART FORTH GO JAVA JS-RHINO JS-MONKEY KTLN OCT PAS-GPC PAS-FPC PERL PERL6 PROLOG PYTHON PYTHON3 PY_NBC R RACKET SQLITE SWIFT UNLAMBDA

hide comments
2024-07-05 17:15:00
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define ull unsigned long long
#define ub upper_bound
#define lb lower_bound
#define binsearch binary_search
#define off(a,k) (a ^ (1<<k))
#define check(a,k) (a & (1<<k))
#define cntbit(a) __builtin_popcount(a)
#define fi first
#define se second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pstr pair<string, string>
#define all(x) x.begin(), x.end()
#define el '\n'
#define f0(i, n) for(int i=0;i<n;i++)
#define f1(i, n) for(int i=1;i<=n;i++)

// void dump(vector<int> a, int n) {
// for(int i = 0; i < n;i++) cout << a[i]<< " ";
// cout << el << ans << el;
// }
int search(string a, char b) {
for(int i =0; i < a.size(); i++) {
if (a[i] > b) return i;
}
return 0;
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
freopen("1.inp", "r", stdin);
freopen("1.out", "w", stdout);
int n; cin >> n;
string a[n + 1];
f1(i, n) {
int x; cin >> x;
cin >> a[i];
}
f1(i, n) {
int check = 0;
string v = {a[i][a[i].size() - 1]};
for(int j = a[i].size() - 2; j >= 0; j--) {
v += {a[i][j]};
sort(v.begin(), v.end());
if (a[i][j] < a[i][j+1]) {
check = 1;
swap(v[0], v[search(v, a[i][j])]);
a[i].erase(j);
a[i] += v;
break;
}
}
if (check == 0) {
cout << i << " " << "BIGGEST" << el;
continue;
}
cout << i << " " << a[i] << el;
}
return 0;
}
2024-07-05 17:12:58
#include<bits/stdc++.h>
using namespace std;
#define vpi vector<pair<int, int>>
#define mkdir vpi dir = {{1,0},{-1,0} ,{0,-1} ,{0,1}}

bool ok_matrix(int i, int j, int r, int c)
{
return i > -1 && i<r && j>-1 && j < c;
}

bool findPath(vector<vector<int>> matrix)
{
int n = matrix.size();
int m = matrix[0].size();
mkdir;
int x, y;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
if (matrix[i][j] == 1)
x = i, y = j;
break;
}
for (int i = 0; i < n * m; i++) {
int c = x, d = y;
cout << x << y << el;
for (auto k : dir) {
int x1 = x + k.first, y1 = y + k.second;
//cout << x1 << y1;
if (ok_matrix(x1, y1, n, m) && matrix[x][y] + 1 == matrix[x1][y1])
{
//cout << "*" << endl;
x = x1;
y = y1;
break;
}
//cout << endl;
}
if (x == c && d == y) return false;
}
return true;
}
int main() {
vector<vector<int>> a =
{ {1,4,5},
{2,3,6} };
cout << findPath(a);
return 0;
}
2024-06-27 17:58:23
#include<bits/stdc++.h>

using namespace std;

void ktao(int a[],string s,int n)
{
for(int i = 1;i <= s.size();i++)
{
a[i] = (s[i - 1] - '0');
}
}

void output(int a[],int n,int dem)
{
cout << dem << " ";
for(int i = 1;i <= n;i++)
{
cout << a[i];
}
cout << "\n";
}


bool check(int a[],int n)
{
for(int i = 1;i < n;i++)
{
if(a[i] < a[i + 1]) return false;
}
return true;
}

void sinh(int a[],int n,int dem)
{
if(check(a,n)) cout << dem << " " << "BIGGEST\n";
else
{
while(!check(a,n))
{
int i;
for(i = n;i >= 1;i--)
{
if(a[i - 1] < a[i]) break;
}
--i;
for(int j = n;j >= i;j--)
{
if(a[j] > a[i])
{
swap(a[i],a[j]);
sort(a + i + 1,a + 1 + n);
output(a,n,dem);
break;
}
}
break;
}
}
}


int main()
{
int t; cin >> t;
while(t--)
{
int dem; string s;
cin >> dem >> s;
int a[100];
int n = s.size();
ktao(a,s,n);
sinh(a,n,dem);
}
}
2023-08-13 02:26:06
t=int(input())
while t:
t-=1
stt,a=input().split()
a=[int(i) for i in a]
n=len(a)
ok=False
i=n-2
while i>=0 and a[i]>=a[i+1]:
i-=1
if i==-1:
ok=True
else:
j=n-1
while a[j]<a[i]: j-=1
a[i],a[j]=a[j],a[i]
l=i+1
r=n-1
while l<r:
a[l],a[r]=a[r],a[l]
r-=1
l+=1

if ok:
print(stt,'BIGGEST')
else:
print(stt,''.join([str(i) for i in a]))


Ai đó kiểm tra hộ mình xem sai đâu được k ạ. chạy ngoài đúng rồi mà up lên báo làm sai. k hiểu chỗ nhập với in ra mình sai như tnao
2021-01-23 03:55:26
cho mình hỏi lỗi segmentation(lỗi ohaan đoạn) phải sửa như nào vậy ạ?
Code mình:
#include<bits/stdc++.h>
using namespace std;

int HoanViKeTiep(string a){
int tg, b[80], j = 0, viTriDung, c;
for(int i = a.length() - 1; i > 0; i--){
if(a[i] <= a[i - 1]){
b[j] = a[i] - 48;
j++;
if(i==1){
cout << "BIGGEST";
return 0;

}
} else {
b[j] = a[i] - 48;
viTriDung = i;
c = a[i - 1] - 48;
break;
}
}
for(int k = 0; k <= j; k++){
if(b[k] > c){
tg = c;
c = b[k];
b[k] = tg;
break;
}
}
for(int i = 0; i < viTriDung-1; i++){
cout << a[i];
}
cout << c;
for(int i = 0; i <= j; i++){
cout << b[i];
}
}

int main(){
int n;//n la so bo test
cin >> n;
int boTestSo[1000];
string a[80];
for(int i = 1; i <= n; i++){
cin >> boTestSo[i] >> a[i];
}
for(int i = 1; i <= n; i++){
cout << boTestSo[i] << " ";
HoanViKeTiep(a[i]); //bo test so i phai cung dong vs string a[i]
cout << endl;
}
}
2019-09-16 10:53:45


Last edit: 2019-09-16 11:03:25
2019-08-25 06:22:32
Tham Khao Code: http://ideone.com/ec7SPu
2018-09-05 05:18:27
Chia sẻ tài liệu học C/C++ từ cơ bản đến nâng cao : https://licklink.net/eUvSt
2018-07-28 12:19:48
https://www.youtube.com/watch?v=H9EwB0zpkco&feature=youtu.be
2018-06-07 05:08:06
Sao mình chạy tất cả các test đúng mà biên dịch vẫn báo sai nhỉ....Help
import java.util.Scanner;

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author HoangNM
*/
class B {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
while (count < n) {
int x = sc.nextInt();
System.out.print(x+" ");
String s = sc.nextLine();
s=s.substring(1);

int leng=s.length();
int a[] = new int[100];
for (int i = 0; i < leng; i++) {
a[i] =s.charAt(i)-'0';
}
Boolean isBigest=true;
for (int i = leng - 2; i >= 0; i--) {
if (a[i] < a[i + 1])
{
isBigest=false;

int k=i+1;
for (int j = leng-1; j >=k; j--) {
if (a[i]<a[j]) {
int t=a[i];
a[i]=a[j];
a[j]=t;
break;
}
}
int j=i+1;
int r=leng-1;
while(j<=r){
int t=a[j];
a[j]=a[r];
a[r]=t;
j++;
r--;
}
break;
}
}

if(isBigest){
System.out.print("BIGGEST");
}else{
for(int i=0;i<leng;i++){
System.out.print(a[i]);
}
}
System.out.println("");
count++;

}
}

}
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.