美文网首页
《算法笔记》入门篇(1)——入门模拟

《算法笔记》入门篇(1)——入门模拟

作者: 广陵周惊蛰 | 来源:发表于2020-01-22 21:05 被阅读0次

入门篇(1)——入门模拟

1、简单模拟

B1001 害死人不偿命的(3n+1)猜想 (15分)

/*PAT_B1001*/ 
#include <stdio.h>
int main()
{
    int n,step=0;
    scanf("%d",&n);
    while(n!=1){
        if(n%2==0) n=n/2;
        else n=(3*n+1)/2;
        step++; 
    }
    printf("%d\n",step);
    return 0;
}
P1001

B1032 挖掘机技术哪家强 (20分)

    #include <cstdio>
const int maxn=100010; 
int school[maxn]={0};//记录每个学校的总分 
int main()
{
    int n,schID,score;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%d",&schID,&score);
        school[schID]+=score;
    }
    int k=1,MAX=-1;
    for(int i=1;i<=n;i++){
        if(school[i]>MAX){
            MAX=school[i];
            k=i;
        }
    }
    printf("%d %d\n",k,MAX);
    return 0;
}
P1032

2、查找元素

codeup1934: 找x

#include <cstdio>
const int maxn=210;
int a[maxn];
int main(){
    int n,x;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        scanf("%d",&x);
        int k;
        for(k=0;k<n;k++){
            if(a[k]==x){
                printf("%d\n",k);
                break;
            }
        }
        if(k==n){
            printf("-1\n");
        }
    }
    return 0;
}
C1934

3、图形输出

B1036 跟奥巴马一起编程 (15分)

#include<cstdio>
int main(){
    int row,col;
    char c;
    scanf("%d %c",&col,&c);
    if(col%2==1) row=col/2+1;
    else row=col/2;
    
    /*第一行*/
    for(int i=0;i<col;i++){
        printf("%c",c);
    }
    printf("\n");
    
    /*第2-row-1行*/
    for(int i=2;i<row;i++){
        printf("%c",c);
        for(int j=0;j<col-2;j++){
            printf(" ");
        }
        printf("%c\n",c);
    } 
    
    //第row行 
    for(int i=0;i<col;i++){
        printf("%c",c);
    }
    
    return 0; 
} 
B1036

4、日期处理

codeup_1928 Problem A 日期差值

#include<cstdio>
int month[13][2]={
   {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}
};

bool isLeap(int year){
    return(year%4==0&&year%100!=0||year%400==0);
}
int main(){
    int time1,y1,m1,d1;
    int time2,y2,m2,d2;
    while(scanf("%d%d",&time1,&time2)!=EOF){
        if(time1>time2){
            int temp=time1;
            time1=time2;
            time2=temp;
        }
        y1=time1/10000,m1=time1%10000/100,d1=time1%100;
        y2=time2/10000,m2=time2%10000/100,d2=time2%100;
        int ans=1;
        while(y1<y2||m1<m2||d1<d2){
            d1++;
            if(d1==month[m1][isLeap(y1)]+1){
                m1++;
                d1=1;
            }
            if(m1==13){
                y1++;
                m1=1;
            }
            ans++;
        }
        printf("%d\n",ans);
    }
    return 0;
}
C1928

5、进制转换

1022 D进制的A+B (20分)

#include<cstdio>
int main(){
    int a,b,d;
    scanf("%d%d%d",&a,&b,&d);
    int sum=a+b;
    int ans[31],num=0;//ans存放D进制的每一位 
    do{
        ans[num++]=sum%d;
        sum/=d;
    }while(sum!=0);
    for(int i=num-1;i>=0;i--){
        printf("%d",ans[i]);
    }
    return 0;
} 
B1022

6、字符串处理

Codeup5901 判断回文

#include<cstdio>
#include<cstring>
const int maxn=256;
bool judge(char str[]){
    int len = strlen(str);//字符串长度
    for(int i=0;i<len/2;i++) {
        if(str[i]!=str[len-1-i]){//如果对称位置不同 
            return false; 
        } 
    }
    return true; 
} 

int main(){
    char str[maxn];
    while(gets(str)){
        bool flag=judge(str);
        if(flag==true){
            printf("YES\n");
        }else{
            printf("NO\n");
        }
    }
    return 0;
}
C5901

PAT_1009 说反话 (20分)

#include <cstdio>
#include <cstring>
#include<iostream>
using namespace std;

int main(){
    char str[90];
    cin.getline(str,90);
    int len=strlen(str),r=0,h=0;
    char ans[90][90];
    for(int i=0;i<len;i++){
        if(str[i]!=' '){
            ans[r][h++]=str[i];
        }else{
            ans[r][h]='\0';
            r++;
            h=0;
        }
    }
    for(int i=r;i>=0;i--){
        printf("%s",ans[i]);
        if(i>0) printf(" ");
    }
    return 0;
}
P1009

注意:get()方法已经不被PAT编译器支持

这里采用的是cin.getline的操作。

改变之处在于:

①增加#include《iostream>

       using namespace std;

②gets --> cin.getline

相关文章

网友评论

      本文标题:《算法笔记》入门篇(1)——入门模拟

      本文链接:https://www.haomeiwen.com/subject/xclezctx.html