1.回文串 codeup_5901
读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
思路:
从前往后遍历字符串,遇到对应位置不一样的就把flag设为false,break退出循环。最后判断如果flag为true就是回文串。
/**
* 03.03 10:02
*
**/
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main() {
char str[260];
scanf("%s", str);
int len = strlen(str);
bool flag = true;
for (int i = 0; i < len / 2; i++){
if(str[i] != str[len-i-1]){
flag = false;
break;
}
}
if(flag == true)
printf("YES");
else
printf("NO");
return 0;
}
2. 排序算法
输入n个数,按从小到大进行排序并输出。
浙大DS练习7.1 排序 (25 分) 这个题目可以练习各种排序算法。
思路:
冒泡排序
n个记录,总共需要 n-1 趟;
第 i 趟,需要比较 n-i 次。
/**
* 03.03 10:20
*
**/
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int main() {
int n;
int a[maxn];
scanf("%d", &n);
// 录入数据
for (int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
// 冒泡排序
for (int i = 1; i < n; i++){ // 从第一趟开始排序
for (int j = 0; j < n-i; j++){ // 第i趟比较 n-i 次
if(a[j] > a[j+1]){
swap(a[j], a[j+1]);
}
}
}
// 输出数据
for (int i = 0; i < n; i++){
printf("%d", a[i]);
if(i != n-1)
printf(" ");
}
return 0;
}