算法竞赛入门经典程序3-6

//

//  excercise.cpp

//  rumen

//

//  Created by Bowie Hsu  on 14/11/19.

//  Copyright (c) 2014年 Bowie Hsu . All rights reserved.

//

#include "excercise.h"

#include <iostream>

#include "stdio.h"

#include "ctype.h"

using namespace std;

int main()

{

//输入字符串

char a[20]="ok Madam,i‘m adam,i";

char b[20];

int p[20];

int m=0;

int max=0;

int str=0,en=0;

//cin.getline(a,10);

//判断回文,剔除标点,并将所有的字母转变成大写

int length=sizeof(a);

for(int i=0;i<length-1;i++)

{

if(isalpha(a[i]))

{p[m]=i;

//记录下改变后的字符在原数组中的位置

b[m++]=toupper(a[i]);

}

}

//判断字符串是否为回文

for (int i=0; i<length; i++)

for(int j=i;j<length;j++)

{

//判断回 并返回标志

int ok=1;

for(int k=i;k<=j;k++)

if(b[k]!=b[j+i-k])

ok=0;

if(ok && j-i+1>max)

{max=j-i+1;

str=p[i];

en=p[i+max-1];

}

}

cout<<en<<endl;

for(int i=str;i<en+1;i++)

{

printf("%c",a[i]);

}

return 0;

}

//效率存在问题,原书中用的时中间法

时间: 2024-10-10 02:07:52

算法竞赛入门经典程序3-6的相关文章

算法竞赛入门经典 程序4-1 组合数

算法竞赛入门经典 程序4-1 组合数 其中求一个数的阶乘多次出现,为了方便以及保证程序整洁,将其作为一个函数编写 #include<iostream> using namespace std; long long factorial(int n) { long long m=1; for(int i=1;i<=n;i++) { m*=i; } return m; } long long c(int n,int m) { return factorial(n)/(factorial(m)*

算法竞赛入门经典程序3-3

#include <iostream> #include <stdio.h> using namespace std; //const int max=8; int a[8][8]; int main() { //输入数字n int n; cin>>n; int x=0,y=n-1; //判断边界条件,并为a[1][n-1]赋值 a[x][y]=1; int num=1; while (num<n*n) //将最外面的数字输入完毕后 在输内部的值 { while

算法竞赛入门经典_4.3_递归

看代码 #include <stdio.h> int f(int n){ return n == 0?1:f(n-1)*n; } int main() { printf("%d\n", f(5)); return 0; } 上面f函数使用了递归,递归由两部分组成,一是递归头,二是递归体. 我们使用gcc调试工具 H:\编程书籍学习\算法竞赛入门经典2代码\算法入门经典第四章>b f 'b' 不是内部或外部命令,也不是可运行的程序 或批处理文件. H:\编程书籍学习\算

《算法竞赛入门经典(第二版)》pdf

下载地址:网盘下载 内容简介  · · · · · · <算法竞赛入门经典(第2版)>是一本算法竞赛的入门与提高教材,把C/C++语言.算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧.全书内容分为12 章,包括程序设计入门.循环结构程序设计.数组和字符串.函数和递归.C++与STL入门.数据结构基础.暴力求解法.高效算法设计.动态规划初步.数学概念与方法.图论模型与算法.高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量例题和习题.书中的代码规范.简洁.易懂,不

算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发.   一.UVaOJ http://uva.onlinejudge.org  西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ.   二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html   "AO

(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html “AOAPC I”是刘汝佳(大

拓扑排序(算法竞赛入门经典)

拓扑排序的定义: 把每个变量看成一个点,”小于“或者”先后“关系看成有向边,则我们得到一个有向图.这样我们的任务实际上是把一个图的所有节点排序,使每一条有向边的(u,v)对应的u都排在v之前,在图论中,我们称之为拓扑排序.不难发现,如果一个有向图里存在回路,则不存在拓扑排序(如果设置一个标志数组,我们可以发现回路中的点一直处于正在被访问状态,这可以作为拓扑排序的结束条件). 我们先看一个样例: 下面我们用邻接矩阵存储这张图:   0 1 2 3 0 0 1 1 1 1 0 0 1 1 2 0 0

《算法竞赛入门经典第二版》 P35 习题2-4 子序列的和(subsequence)

/* <算法竞赛入门经典第二版> P35 习题2-4: 输入两个正整数 n < m < 10^6,输出 (1/n)^2 + 1/(n+1)^2 +……+ 1/m^2,保留5位小数. 输入包含多组数据,结束标志为 m=n=0. 有错欢迎指出^_^ */ #include<stdio.h> int main() { int m,n,i,j=1; while(scanf("%d%d",&m,&n) != EOF) { double sum

《算法竞赛入门经典》动态规划复习

codevs 4979 数塔 1 #define N 100 2 #include<iostream> 3 using namespace std; 4 #include<cstdio> 5 int a[N][N],b[N][N],n; 6 int main() 7 { 8 scanf("%d",&n); 9 for(int i=1;i<=n;++i) 10 for(int j=1;j<=i;++j) 11 { 12 scanf("