解题思路:
本题看似交换,其实可以只比较交换前的数,即用下标找到交换前的数,若前面的数>后面的数,则交换后的数必然小于交换前的数,即符合条件
交换时可先用第一个和最后一个交换,即比较第一个数和最后一个的大小,若大,则满足题目条件,再比较第一个数和倒数第二个数的大小,以此类推。。。
若出现相等的情况,则将第一个数和最后一个数的下标分别++和--,即向下一位移位,再次比较,找到结果即可
注意事项:
参考代码:
#include<iostream>
using namespace std;
string s;
int sum = 0;//用于计数
int dfs(int l,int r)//自定义函数,用于计算较小值
{
while (l < r)
{
if (s[l] > s[r])//当左边的下标小于右边下标且左边值较大的时候,返回1
return 1;
else if (s[l] == s[r])
{
l++; r--;
}
else
break;
}
return 0;//若上述条件不满足则返回0
}
int main()
{
cin >> s;
int n = s.length();//求出字符串长度
for (int left = 0; left < n; left++)//左边下标从0~n
{
for (int right = n - 1; right > left; right--)//右边下标从左边下标到最右边
{
if(dfs(left, right))sum++;//当成立时,则计数器++
}
}
cout << sum;
return 0;
}
0.0分
1 人评分
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:868 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1067 |
剔除相关数 (C语言代码)浏览:1058 |
买不到的数目 (C++代码)浏览:909 |
Pascal三角 (C语言代码)格式错误浏览:550 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:1024 |
【计算球体积】 (C语言代码)浏览:1158 |
printf基础练习2 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:724 |
C二级辅导-温度转换 (C语言代码)浏览:802 |