- 题意概要:
- 从输入的数num中选择一段连续子串(未限定长度,根据对题意的理解,2<=str_len<=n,n为输入字符串长度),
反转一次放入原位置,满足num_new<num; - 输入:
长度为n的字符串(十进制数num)。字符串元素为0-9。 - 输出:
满足题意条件的子串选择方案个数。
*:允许前导0的存在。
for(int i=0;i<=n-1;i++){
for(int j=i+1;j<=n-1;j++){
if(num_i_to_j<num) cnt++;
}
}
#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
const int maxn=5010;
int cmp(char x[],int len){
for(int i=0;i<=len/2-1;i++){
if(x[i]==x[len-i-1]) continue;
else if(x[i]>x[len-i-1]) return 1;
else if(x[i]<x[len-i-1]) return 0;
}
return 0;
}
int main()
{
char str[maxn],substr[maxn];
scanf("%s",str);
int cnt=0;
int len=strlen(str);
int sub_idx=0;
for(int i=0;i<=len-2;i++){
sub_idx=0;
substr[sub_idx]=str[i];
sub_idx++;
for(int j=i+1;j<=len-1;j++){
substr[sub_idx]=str[j];
int flag=cmp(substr,j-i+1);
if(flag) cnt++;
sub_idx++;
}
}
cout<<cnt;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
string s;
int judge(int l,int r){
while(l<r){
if(s[l]==s[r]){
l++;
r--;
continue;
}else if(s[l]<s[r]) return 0;
else return 1;
}
return 0;
}
int main(){
cin>>s;
int l=0,r=0;
int len=s.length();
int cnt=0;
for(int l=0;l<len-1;l++){
for(int r=l+1;r<=len-1;r++){
if(judge(l,r)) cnt++;
}
}
cout<<cnt;
return 0;
}