题目:
分析:
之前leetcode貌似做过,竟然还错的一塌糊涂。
找上一个,倒着找发现倒着是上升的,然后后的找比上升点小的最近的,换位,然后后面还要倒序。
找下一个,找下降的。换位,倒序
代码:
#include<bits/stdc++.h>
using namespace std
;
int main()
{
int n
;
cin
>>n
;
int A
[n
];
for(int i
=0;i
<n
;i
++)
cin
>>A
[i
];
for(int i
=n
-2;i
>=0;i
--)
{
if(A
[i
]>A
[i
+1]) {
int cc
=i
+1;
for(int k
=cc
;k
<n
;k
++)
{
if(A
[k
]<A
[i
])
{
cc
=k
;
}
else break;
}
int t
=A
[i
];A
[i
]=A
[cc
];A
[cc
]=t
;
int j
=0;
for(;j
<=i
;j
++) cout
<<A
[j
]<<' ';
for(int kk
=n
-1;kk
>i
;kk
--) cout
<<A
[kk
]<<' ';
return 0;
}
}
cout
<<"ERROR";
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-60232.html