全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

蓝杯四十四,字符串管理

HDU1039-Easier Done Than Said?(字符串处理),hdu1039-easierdone

一,题意:
  判断三个条件
  1:有元音字母
  2:不能三个连续元音或辅音
  3:不能连续两个相同的字母,除非ee或oo
二,思路
  写函数一个条件一个条件去判断

图片 1 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 //判断是否为元音 6 bool isyuan(char a){ 7 if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u') 8 return true; 9 return false; 10 } 11 12 //判断第一个条件是否满足 13 int judge1(char a[] , int len){ 14 for(int i = 0 ; i < len ; i ){ 15 if(yuan(a[i])) 16 return 1; 17 } 18 return 0; 19 } 20 21 //判断第二个条件是否满足 22 int judge2(char a[] , int len){ 23 for(int i = 0 ; i < len - 2 ; i ){ 24 if((isyuan(a[i])&&isyuan(a[i 1])&&isyuan(a[i 2]))||(!isyuan(a[i])&&!isyuan(a[i 1])&&!isyuan(a[i 2]))) 25 return 0 ; 26 } 27 return 1; 28 } 29 30 //判断第三个条件是否成立 31 int judge3(char a[] , int len){ 32 for(int i = 0 ; i < len - 1 ; i ){ 33 if(a[i]==a[i 1]&&a[i]!='o'&&a[i]!='e') 34 return 0 ; 35 } 36 return 1; 37 } 38 39 int main(){ 40 char arr[100]; 41 while(cin>>arr&&strcmp(arr,"end")){ 42 int len = strlen(arr); 43 int k1 = judge1(arr,len); 44 int k2 = judge2(arr,len); 45 int k3 = judge3(arr,len); 46 //当三个条件都满足时 47 if(k1==1&&k2==1&&k3==1) 48 cout<<"<"<<arr<<"> "<<"is acceptable."<<endl; 49 else 50 cout<<"<"<<arr<<"> "<<"is not acceptable."<<endl; 51 } 52 return 0; 53 } View Code

版权声明:本文为博主原创文章,未经博主允许不得转载。

Done Than Said?(字符串处理),hdu1039-easierdone 一,题意: 判断三个条件 1:有元音字母 2:不能三个连续元音或辅音 3:不能连续两个...

算法训练 确定元音字母位置 

/*IBM减一

poj2389-Bull Math(大整数乘法),poj2389-bullmath

一,题意:
  大整数乘法模板题
二,思路:
  1,模拟乘法(注意"逢十进一")
  2,倒序输出(注意首位0不输出)
三,步骤:
  如:555 x 35 = 19425 
     5 5 5        5 5 5
     x   3 5        x    3 5
    -----------   ==>     ----------
      2 7 7 5       25 25 25
      1 6 6 5        15 15 15
  -------------      -----------------
      1 9 4 2 5     15 40 40 25
            逢十进一
            ---------------
            1   9   4   2   5

图片 2 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 const int N = 10010; 5 char a[N],b[N]; 6 int ans[N]; //记录结果的数组 7 int digit; //记录结果的位数 8 9 //模拟乘法的过程 10 void MUL(int len , int len2){ 11 int l = 0 ; 12 for(int i = len2 - 1 ; i >= 0 ; i--){ 13 int k = l ; 14 int m = l ; 15 for(int j = len - 1 ; j >= 0 ; j--){ 16 ans[k ] = (b[i]-'0')*(a[j]-'0') ans[m ]; //储存的时候为倒序 17 } 18 l ; //乘完一位,往后移一位相加 19 digit=k; //记录位数 20 } 21 //进行"逢十进一"操作 22 for(int i = 0 ; i<=digit ; i ){ 23 if(ans[i]>=10){ 24 ans[i 1] = ans[i 1] ans[i] / 10 ; 25 ans[i] %=10 ; 26 } 27 } 28 } 29 30 //输出操作 31 void print(){ 32 if(ans[digit]!=0) //判断首位是否为0 33 cout<<ans[digit]; 34 for(int i = digit-1 ; i>=0 ; i-- ){ //倒序输出 35 cout<<ans[i]; 36 } 37 cout<<endl; 38 } 39 40 int main(){ 41 while(cin>>a>>b){ 42 int len = strlen(a); 43 int len2 = strlen(b); 44 memset(ans,0,sizeof(ans));//初始化ans[]为0 45 MUL(len,len2); 46 print(); 47 } 48 return 0; 49 } View Code

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

Math(大整数乘法),poj2389-bullmath 一,题意: 大整数乘法模板题 二,思路: 1,模拟乘法(注意"逢十进一") 2,倒序输出(注意首位0不输...

曾经在软通动力写过的算法题其中有一小部分是参考网上的资料,现在拿出来给大家分享!
第3章 控制语句

时间限制:1.0s  内存限制:512.0MB

样例输入

/* 1、打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153 = 13 53 33。 */
#include<iostream.h>
void main()
{
int i, a=0, b=0, c=0;
for(i=100;i<1000;i )
{
a=i;
b=i/10;
c=i/100;
if(a*a*a b*b*b c*c*c==i)
cout<<"i="<<i<<endl;
}
}

提交此题   

2

/* 2、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6 = 1 2 3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面的格式输出其因子:
6 -〉1,2,3 */
#include<iostream.h>
void main()
{
int i,j,sum=0,a[50],k,t;
for(i=1;i<=1000;i )
{
sum=0;
        for(j=1;j<i;j )
{
if(i%j==0)
{
sum =j;
a[k ]=j;
}
}
t=k;
if(sum==i)
{
cout<<i<<"->";
for(k=0;k<t;k )
{
cout<<a[k];
if(k<t-1)cout<<",";
}
cout<<endl;
}
    k=0;
}
}

输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0。英语元音字母只有‘a’、‘e’、‘i’、‘o’、‘u’五个。

HAL

/* 3、求Sn=a aa aaa … aa…a之值,其中a是一个数字。例如:2 22 222 … 22222(此时n=5),n由键盘输入。*/
#include<iostream.h>
void main()
{
double a,sn=0.0,sum=0.0;
int n,i;
cout<<"please input a number";
cin>>a;
    cout<<"please input n number";
cin>>n;
sn=a;
sum=a;
    for(i=2;i<=n;i )
    {
sum=sum*10 a;
sn =sum;
    }
cout<<"Sn="<<sn<<endl;
}

样例输入:

SWERC

/* 4、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第10次反弹多高?*/
#include<iostream.h>
void main()
{
double h1=100,h2=100,sum=0.0;
int i;
for(i=1;i<=10;i )
{

hello

样例输出

sum =h2;
h1=h1/2.0;
h2=h1*2;
}
cout<<"sum="<<sum<<"   "<<"h1="<<h1<<endl;
}

样例输出:

String #1

/* 5、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。*/
#include<iostream.h>
void main()
{
int number,i;
number=1;
for(i=10;i>1;i--)
number=(number 1)*2;
cout<<"number="<<number<<endl;
}

2

IBM

8.++程序中使用流格式输入、输出,我们可以怎么做?
答:在程序的开头包含头文件iostream.h
     cin输入,cout输出。
例如:

样例输入:

String #2

#include<iostream.h>
void main()
{
   int a;
   cout<<"请输入a的值:";
   cin>>a;
   cout<<"a的值为:"<<a<<endl;
}

apple

TXFSD

第4章 函数

样例输出:

*/

/* 1、写一函数用“气泡法”对输入的10个字符按由小到大的顺序排列。*/
#include<iostream.h>
void main()
{
int i,j,temp,a[10];
cout<<"please input ten numbers:n";
for(i=0;i<10;i )
cin>>a[i];
for(i=0;i<10;i ) //每循环一次确定数组中一个数的位置
for(j=i 1;j<10;j ) //每次循环对比一个数的大小
{
if(a[i]>a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
cout<<"resort result=";
for(i=0;i<10;i )
cout<<a[i]<<" ";
}

1

思路分析:观察案例可知,输出字母是输入字母的后一个,而Z对应的则是A。通过if―else语句即可完成要求。

/* 2、用递归方法求n阶勒让得多项式的值,递归公式为
         1 (n = 0)
Pn(x) =  x (n = 1)
         ((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n (n > 1) */
#include<iostream.h>
double fun (double,double);
void main()
{
double n,x,sum;
cout<<"input n and x"<<endl;
cin>>n>>x;
sum=fun(n,x);
cout<<"P"<<n<<"("<<x<<")"<<"="<<sum<<endl;
}
double fun(double n1,double x1)
{
if (n1==0)
return 1;
else if (n1==1)
return  x1;
else if (n1>1)
return ((2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1))/n1;
}

样例输入:

//方法一:

/* 3、编写一函数,由实参传来一字符串,统计此字符串中字母、数字、空格、和其它字符的个数,并在主函数中输入字符串以及输出上述结果。 */
#include<iostream.h>
void judge(char a[]);
void main()
{
const int size=100;
char a[size];
cin.getline(a,size);
judge(a);
}
void judge(char a[100])//判断字符类型
{
int letter=0,number=0,others=0,i=0;
while(a[i]!='\0')
{
if ((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='z')) letter ;//统计字母个数
else if (a[i]>='0' && a[i]<='9') number ;//统计数字个数
else others ;//统计其他数个数
i ;
}
cout<<"letter="<<letter<<"  number="<<number<<"  others="<<others<<endl;
}

pmp

#include<iostream>

/* 4、给出年、月、日,计算该日是该年的第几天。 */
#include<iostream.h>
int lead(int);
void main()
{
int ly,year,month,date,i,sum=0;
cout<<"input year、month、date: ";
cin>>year>>month>>date;
int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
ly=lead(year);
if (ly==1)
a[1]=29;//366天
else a[1]=28;//365天
for(i=0;i<month-1;i ) //当前月之前所有月天数累加和
sum =a[i];
sum =date; //加上当前月天数
cout<<"你输入的日期是当年的第"<<sum<<"天";
}
int lead(int y)//判断闰年
{
if((y%4==0&&y0!=0)||(y@0==0)) return 1;//是闰年
else return 0;//不是闰年
}

样例输出:

#include<vector>

/* 5、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 */
#include<iostream.h>
int cdivisor(int,int);
int cmultiple(int,int,int);
void main()
{
int x,y,d,m;
cout<<"input two number: ";
cin>>x>>y;
d=cdivisor(x,y);
m=cmultiple(x,y,d);
cout<<"common divisor is "<<d<<endl<<"common multiple is "<<m<<endl;
}
int cdivisor(int x1,int y1)//最大公约数
{
int r,temp;
if (x1<y1)
{
temp=x1;
x1=y1;
y1=temp;
}
while(x1%y1)//当较大数除以较小数余数等于0时,较小数为最大公约数
{
r=x1%y1;
x1=y1;
y1=r;
}
return y1;
}
int cmultiple(int x2,int y2,int d1)//最小公倍数
{
return x2*y2/d1;//两数相乘结果除以它们的最大公约数为最小公倍数
}

0

#include<string>

/* 6、写一函数,将两个字符串连接。 */
#include<iostream.h>
#include<string.h>
void main()
{
const int size=100;
char a[size],b[size];
cout<<"input two string:"<<endl;
cin.getline(a,size);
cin.getline(b,size);
strcat(a,b);
cout<<"a="<<a<<endl;
}

#include<stdio.h> 

#include<algorithm>

/* 7、写一函数,将一个字符串的元音字母复制到另一个字符串,然后输出。 */
#include<iostream.h>
#include<string.h>
void scpy(char *,char *);
void main()
{
const int size=100;
char a[size]="Hello world";
char b[size]="Net";
cout<<"a= "<<a<<"b= "<<b<<endl;
scpy(a,b);
cout<<"a= "<<a<<endl;
}
void scpy(char *p,char *q)
{
while(*q!='\0')
{
if (*q=='a'||*q=='A'||*q=='e'||*q=='E'||*q=='i'||*q=='I'||*q=='o'||*q=='O'||*q=='u'||*q=='U')
*p =*q;
q ;
}
}

#include<string.h> 

using namespace std;

/* 8、写一函数,输入一个四位数字,要求输出这4个数字字符,但每两个数字间空一空格。如输入1990,应输出“1 9 9 0”。 */
#include<iostream.h>
#include<string.h>
void outs(char a[]);
void main()
{
const int size=10;
char a[size];
cin.getline(a,size);
outs(a);
}
void outs(char a[10])
{
int i;
if(strlen(a)<=4)
{
for(i=0;i<4;i )
cout<<a[i]<<" ";
}
else cout<<"input error."<<endl;
}

int main(){ 

int main()

第5章   数组

    char a[100]; 

{

/* 1、将一个数组中的值按逆序重新存放,例如,原来顺序为:a、b、c、d。要求改为:d、c、b、a。 */
#include<iostream.h>
void back(char *);
void main()
{
char a[50]="abcdefg";
cout<<"a="<<a<<endl;
back(a);
}
#include<iostream.h>
void back(char *p)
{
int i=0;
while(*p!='\0')
{
p ;//把指针定位到字符串末尾
i ;//统计字符个数
}
cout<<"a=";
for(;i>0;i--)//逆序输出
{
p--;
cout<<*p;
}
cout<<endl;
}

    int i; 

int num;

/* 2、打印出杨辉三角形(要求打印出前15行)。(杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。) */
#include<iostream.h>
void tri(int a[][15]);
void main()
{
int i,j,a[15][15];
tri (a);
cout<<"a= ";
for(i=0;i<15;i )//遍历整个数组
{
for(j=0;j<=i;j )
{
cout<<a[i][j];
if(a[i][j]>=1&&a[i][j]<=9)//当输出个位数之后输出4个空格保持整齐
cout<<"    ";
else if (a[i][j]>=10&&a[i][j]<=99)//当输出十位数之后输出3个空格保持整齐
cout<<"   ";
else if(a[i][j]>=100&&a[i][j]<=999)//当输出百位数之后输出2个空格保持整齐
  cout<<"  ";
  else cout<<" ";//当输出百位数之后输出1个空格保持整齐
}
cout<<endl<<"   ";//每行输出结束后换行
}
}
void tri(int a[15][15])
{
int i,j;
for(i=0;i<15;i )
for(j=0;j<=i;j )
{
if(j==0||j==i)//三角形第一列和对角线被赋值为1
a[i][j]=1;
else a[i][j]=a[i-1][j-1] a[i-1][j];//算出其余的数组元素
}
}

    scanf("%s",a); 

vector<string>v;

/* 3、编一程序,将两个字符串连接起来,不要用strcat函数。 */
#include<iostream.h>
#include<string.h>
void scat(char *,char *);
void main()
{
const int size=100;
char a[size]="Hello";
char b[size]="Bye";
cout<<"a="<<a<<"   b="<<b<<endl;
scat(a,b);
cout<<"a="<<a<<" after link a and b"<<endl;
}
void scat(char *p,char *q)
{
while(*p!='\0')//确定数组a的插入位置
{
p ;
}
while(*q!='\0')
{
*p=*q;
p ;
q ;
}
}

    for(i=0;i<strlen(a);i ){ 

vector<string>::iterator it;

/* 4、打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如:三阶魔方阵:
      8 1 6
      3 5 7
      4 9 2
要求打印由1到n2的自然数构成的所有魔方阵。 */
//方法一:输出N介魔方阵,但每介只输出一种。
#include<iostream.h>
void square(int a[][10],int k,int n);
void main()
{
int n,i,j,k,a[10][10]={0};
cout<<"input an odd number:"<<endl;
cin>>n;
k=n/2;//确定第一个数列数
square(a,k,n);
for(i=0;i<n;i )
{
for(j=0;j<n;j )
cout<<"t"<<a[i][j];
cout<<endl;
}
}
void square(int a[][10],int k,int n)
{
int i,j;
for(i=1,j=0;i<=n*n;i ,j--,k )//n为阶数,从1开始给数组赋值
{
if(j<0&&k>=n)//当数组行列都越出范围时候,确定数组正确位置
{
j =2;k-=1;
}
else if(j<0)//当数组行越出范围时候,确定数组正确位置
j =n;
else if(k>=n)//当数组列越出范围时候,确定数组正确位置
          k-=n;
  else if(a[j][k]!=0)//当数组原位置有数时候,确定数组位置
  {
j =2;k-=1;
  }
a[j][k]=i;
}
}
//方法二:输出N介魔方阵所有魔方阵。
#include <string>
#include <iomanip>
#include <iostream>

        if(a[i]=='a' || a[i]=='i' || a[i]=='e' || a[i]=='o' || a[i]=='u'){ 

cin>>num;

using namespace std;

            printf("%d",i 1); 

for(int i=0;i<num;i )

void printA(int **p,int n)//输出这个n阶魔方阵
{
cout<<endl<<"下面是一个"<<n<<"阶魔方阵:"<<endl;

            return 0; 

{

int i,j;

        } 

string temp;

for(i = 0;i < n;i )
{
for(j = 0;j < n;j )
{
cout<<setw(4)<<p[i][j];
}

    } 

cin>>temp;

cout<<endl;
}

    printf("0"); 

v.push_back;

cout<<endl<<endl;
}
bool Judge(int **p,int n)//判断是否为n阶魔方阵
{
int i,j,sum = 0,NowSum = 0;
bool YesOrNo = true;

    return 0; 

}

for(j = 0;j < n;j )//第一行总和
{
sum = p[0][j];
}

int n = 1;

for(i = 1;i < n;i )//判断每行总和是否相等
{
NowSum = 0;
for(j = 0;j < n;j )
{
NowSum = p[i][j];
}

思路分析:

for(it=v.begin();it!=v.end

if(NowSum != sum)
{
YesOrNo = false;

①定义变量:字符串(一维数组) ,循环次数;

{

goto END;
}
}

②输入字符串;

string temp;

for(i = 0;i < n;i )//每列是否相等
{
NowSum = 0;
for(j = 0;j < n;j )
{
NowSum = p[j][i];
}

③for语句循环,if语句判断是否为元音字母;

temp = *it;

if(NowSum != sum)
{
YesOrNo = false;

④输出首次元音字母所在位置。

cout<<"string #"<<n <<endl;

goto END;
}
}

算法训练 数列 

for(int j=0;j<temp.length

NowSum = 0;
for(i = 0,j = 0;i < n,j < n;i ,j )//主对角线是否相等
{
NowSum = p[i][j];
}
if(NowSum != sum)
{
YesOrNo = false;

时间限制:1.0s  内存限制:256.0MB

{

goto END;
}

提交此题  锦囊1  锦囊2

if(temp[j]=='Z')

NowSum = 0;
for(i = n-1,j = 0;i >= 0,j < n;i--,j )//次对角线是否相等
{
NowSum = p[i][j];
}
if(NowSum != sum)
{
YesOrNo = false;

问题描述

cout<<'A';

goto END;
}

  给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:

cout<<char(temp[j] 1);

END:
return YesOrNo;
}
void combination(int **p,int n,int *a)//求m = n*n个数(1,2,3.....m)的全排列
{
int m = n*n;
static int Num = 0;
int *b_val = new int[m];
int c = 0,k,i,j;

  1,3,4,9,10,12,13,…

}

b_val[c] = -1;//一维数组首地址的值赋-1 c[0]-1
while(b_val[0] < m) //-1
{
if( b_val[c] < m) //分别从0开始累加每个元素值,并限制不超出最大阶数
                 //b[0]0 [1]0 [1]1 [2]0 [2]1 [2]2...[6]6...[7]0...[7]7 [8]0...[8]8 判断魔方 [8]9 012345678
                      //                                               [7]8 [8]0...[8]7 判断魔方 [8]8 [8]9 012345687
     //                                 [6]7...[7]0...[7]6        [8]8 012345768
                                           //         012345786
     //                                                                012345867 ...
           //      876543210
{  
for(k = 0;k < c;k ) //是否与前面数字重复,如有重复元素跳出,否则使K下标等于C下标                                 
if(b_val[k] == b_val[c])                                                    
break;
   
if(k == c)//如果没有重复元素,就可以确定当前元素值,并继续排列下一个下标的数组元素
{
if(c 1 < m) //1 2 3...7 8   如果不满足条件,则生成了一组排列方式,否则继续排列下一个元素
           //          8
{   
c; //1 2 3...7 8
//          8
b_val[c] = -1;
//   continue;
}
else  //生成了一组排列方式
{
k = -1;
for(i = 0;i < n;i )
{
for(j = 0;j < n;j )
{
p[i][j] = a[b_val[ k]];//a[0]-a[8]
}
}

  (该序列实际上就是:30,31,30 31,32,30 32,31 32,30 31 32,…)

cout<<endl;

//判断是否为n阶魔方阵
if(Judge(p,n))
{
printA(p,n);
}
}
}
}
else
{
c--;
}
}

  请你求出这个序列的第N项的值(用10进制数表示)。

}

delete []b_val;
}
void evaluate(int **p,int n)//给n阶方阵的元素赋值
{
int i;

  例如,对于k=3,N=100,正确答案应该是981。

return 0;

int *AllNum = new int[3*3];
for(i = 1;i <= n*n;i )
{
AllNum[i - 1] = i;
}

输入格式

}

combination(p,n,AllNum);

  只有1行,为2个正整数,用一个空格隔开:

*/

delete []AllNum;
}
void main()
{
int i,n,**a;
string s;

  k N

//方法二:

do
{
//输入n阶方阵的阶数n
cout<<"请输入n阶方阵的阶数n(退出程序按e或E键):";
cin>>s;

  (k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。

#include<iostream>

if(!strcmp(s.c_str(),"e") || !strcmp(s.c_str(),"E"))
{
break;
}
else if(s.find_first_not_of("0123456789") != string::npos)
{
cout<<"请输入有效的数字,不能含有非数字的字符。"<<endl;

输出格式

#include<string>

continue;
}
else
{
n = atoi(s.c_str());

本文由全球彩票平台发布于全球彩票注册平台编程,转载请注明出处:蓝杯四十四,字符串管理

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。