zoukankan      html  css  js  c++  java
  • 竞赛入门 数组和字符串

    读入一些整数,逆序输出 :

    #include <iostream>

    using namespace std;

    int main()

    {

      const int MAX = 100;

    int arr[MAX];

    int temp,index=0;

    while(cin>>temp,temp!=0)

    arr[index++]=temp;

    while(index>0)

    cout<<arr[--index]<<" ";

    return 0 ;

    }

    n盏灯,编号1-n,第1个人把所有的灯打开,第二个按下所有编号为2的倍数的开关,第3个人按下第三倍数的开关,以此类推,一共有k个人,问最后有哪些灯开着?
    输入n和k,输出开着的灯编号.
    输入: 7 3
    输出:1 5 6 7
     
    #include <iostream>
    using namespace std;
    int main()
    {
        int n=0,k=0;//初始化n为灯 k为人的个数
    cin>>n>>k;
    int lamp[100];
    for(int i = 0;i!=n;++i){
    lamp[i]=0;
    }
    for(int i = 1;i<=k;++i)
    {
    for(int j = 1;j <= n/i;++j)
    {
    lamp[i*j-1]=!lamp[i*j-1];
    }
    }
    for(int i = 0;i!=n;++i)
    if(lamp[i]!=0)
    cout<<i+1<<" ";
    return 0 ;
    return 0 ;
    }
     
     
    红色循环部分.改成  
    for(int j=1;j<=n;++j)
    {
        if(j%i==0)
        lamp[j-1]=!  lamp[j-1];
    }
    这样感觉效果更好.
     
     
     
    蛇形填数
    在n*n方阵里填入 1,2,...,n*n,要求填成蛇形。例如n=4时方阵为:
    10 11  12  1
    9   16  13  2
    8   15  14  3
    7    6   5    4
     
    上面的方阵,多余的空格只是为了便于观察规律,不比严格输出.n<=8;
     
     
    #include <iostream>
    using namespace std;
    int main()
    {
        const int MAX =10;
    int snake[MAX][MAX];
     
    for(int i =0;i!=MAX;++i){
    for(int j =0;j!=MAX;++j)
    snake[i][j]=0;
    }
     
    int n,x,y;
    cin>>n;
    x=0;y= n-1;
    int curNum= snake[x][y]=1;
    while(curNum<n*n)
    {
    while(x+1<n&&snake[x+1][y]==0)
    {
    snake[++x][y]=++curNum;
    }
    while(y-1>=0&&snake[x][y-1]==0)
    {
    snake[x][--y]=++curNum;
    }
    while(x-1>=0&&snake[x-1][y]==0)
    {
    snake[--x][y]=++curNum;
    }
    while(y+1<n&&snake[x][y+1]==0)
    {
    snake[x][++y]=++curNum;
    }
     
    }
        cout<<"最后curNum:"<<curNum<<endl;
        cout<<"n*n:"<<n*n<<endl;
    for(int i =0;i<n;i++)
    {
    for(int j = 0;j<n;j++)
    cout<<snake[i][j]<<endl;
    }
     
    return 0 ;
    }
     
     
    最长回文子串:
    输入一个字符串,求出其中最长的回文子串。子串:在原串中连续出现的字符串片段。判断是,应该忽略所有标点符号和空格,切忽略大小写,但输出应该保持原样。
     
     
    #include "stdafx.h"
    #include<iostream>
    #include<string>
    using namespace std;
     
    int _tmain(int argc, _TCHAR* argv[])
    {  
    string test="youxixuoy you a re pig";
    string s="";
    int maxlen=0;
    int locate[100];
    int left=0,right=0;
     
    for(string::size_type i = 0;i<=test.size();++i)
    {
    if(isalpha(test[i])){
    s+=toupper(test[i]);
    locate[s.size()-1]=i;
    }
    }
    for(string::size_type i =0;i<=s.size();++i)
    {
    for(string::size_type j = i+1;j<=s.size();++j)
    {
    string word(s.begin()+i,s.begin()+j);
    bool ok=true;
    for(string::size_type m=0;m<=word.size()/2;++m)
    {
    if(word[m]!=word[word.size()-1-m])
    ok = false;
    }
    if (ok)
    {
    if(word.size()>maxlen)
    {
    left = i;right =j;
    maxlen=word.size();
    }
    }
    }
    }
    for(int i = locate[left];i<=locate[right-1];i++)
    cout<<test[i];
    return 0 ;
    }
  • 相关阅读:
    准备试用一下PHPUnit
    php dump 当前所有局部变量
    利用JNI动态链接库实现Java调用Jerasure库
    CentOS 5.5下配置新的Java环境
    Eclipse安装SVN插件
    hadoop0.20.2 Eclipse下编译过程
    学习ant——Java的Build工具
    CentOS5.5下安装MySQL 5.5全过程
    转载:Hadoop0.20.2集群的安装配置
    Linux 下使用Java连接MySQL数据库,并且实现插入、删除、选择操作
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3349066.html
Copyright © 2011-2022 走看看