moedisk 发布的文章

#include <cstdio>

const int maxn=100010;
bool hashTable[maxn]={false};

int main(){
    int n,m,x;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        scanf("%d",&x);
        hashTable[x]=true;  //数字x出现过
    }
    for(int i=0;i<m;i++){
        scanf("%d",&x);
        if(hashTable[x]==true){     //如果数字x出现过
            printf("Yes");
        }else{printf("No");}
    }
    return 0;
}

枚举,最小的放在第一个,先排再比。

#include <cstdio>
#define N 10

int main(){
    int a[N];
    for(int i=0;i<10;i++){
        scanf("%d",&a[i]);
    }
    int i,j,t;
    for(i=1;i<N;i++){    //从大到小插入排序 
        t=a[i];            //将等待插入的元素保存在t里 
        for(j=i;j>0&&a[j-1]>t;j--)    //把比t大的元素后移 
        a[j]=a[j-1];
        if(j!=i)    a[j]=t;        //将t插入到j 
    }
    for(i=0;i<N;i++){
        printf("%5d",a[i]);
    }
}

数列前几项为1,1,2,3,5,8,13,21,..。
是满足F(0)=1,F(1)=1,【递归边界】
F(n)=F(n-1)+F(n-2) (n>=2)的数列【递归式子】。

#include <cstdio>

int F(int n){
    if(n==0||n==1)  return 1;
    else return F(n-1)+F(n-2);
}

int main(){
    int n;
    scanf("%d",&n);
    printf("%d\n",F(n));
    return 0;
}

对一个序列A中的元素A[1]~A[i],令i从1到n枚举,进行n趟操作,每趟从待排序部分[i,n]中选择最小的元素,令其与待排序部分的第一个元素A[i]进行交换。n趟区间后,所有元素会是有序的。

枚举,最小的放在第一个,先比再排。

#include <cstdio>

int main(){
    int a[10];
    for(int i=0;i<10;i++){
        scanf("%d",&a[i]);
    }

    for(int i=0;i<10;i++){
        for(int j=i+1;j<10;j++){
            if(a[i]<a[j]){
                int k=a[i];
                a[i]=a[j];
                a[j]=k;
            }
        }
    }

    for(int i=0;i<10;i++){
        printf("%5d",a[i]);
    }
}

给定一句英语,要求编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

#include <cstdio>
#include <cstring>

    int main(){
        char str[90];
        gets(str);
        int len=strlen(str),r=0,h=0;    //r为行,h为列。
        char ans[90][90];               //存放单词。
        for(int i=0;i<len;i++){
            if(str[i]!=' '){            //如果不是空格,则存放至ans[r][h],并令h++。
                ans[r][h++]=str[i];
            }else{                      //如果是空格,单词结束,r+1,h=0。
                ans[r][h++]='\0';
                r++;
                h=0;
            }
        }
        for(int i=r;i>=0;i--){          //倒着输出单词。
            printf("%s",ans[i]);
            if(i>0)printf(" ");
        }
        return 0;
    }