欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2.5

程序员文章站 2022-03-26 13:40:41
...

2.5
一、Hello, World!的大小
思路:简单题,考察sizeof的用法

#include<bits/stdc++.h>
using namespace std;
int main() {
    cout<<sizeof"Hello, World!";
    return 0;
}

二、显示器
思路:题有难度,考察函数调用和模拟,别人讲的。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
char a[505];
void vertical(int sx) {
    a[sx] = '|';
}
void horizontal(int sy,int s) {
    for(int i = sy; i<s + sy; i++) {
        a[i] = '-';
    }
}
void Paint(int Size,char b[]) {
    int len = strlen(b);
    for(int k = 1; k<=2*Size + 3; k++) {
        memset(a,' ',sizeof(a));
        for(int i = 0; i<len; i++) {
            if(k == 1) {
                if(b[i] == '6' || b[i] == '0' || b[i] == '2' || b[i] == '3' || b[i] == '5' || b[i] == '7' || b[i] == '8' || b[i] == '9') {
                    horizontal((Size + 2)*i + i + 2,Size);
                }
            }
            if((k > 1 && k <= 1 + Size)) {
                if(b[i] == '0' || b[i] == '4' || b[i] == '5' || b[i] == '6' || b[i] == '8'||b[i]=='9') {
                    vertical((Size + 2) * i + i + 1);
                }
                if(b[i] == '0'||b[i] == '1' || b[i] == '2' || b[i] == '3' || b[i] == '4' || b[i] == '7' || b[i] == '8' || b[i] == '9') {
                    vertical((Size + 2) * i + i + 1 + Size + 1);
                }
            }
            if( (k > Size + 2 && k < Size*2 + 3)) {
                if(b[i] == '0' || b[i] == '2' || b[i] == '6' || b[i] == '8') {
                    vertical((Size + 2) * i + i + 1);
                }
                if(b[i] == '0'||b[i] == '1' || b[i] == '3' || b[i] == '4' || b[i] == '6' || b[i] == '7' || b[i] == '8' || b[i] == '9' || b[i] == '5') {
                    vertical((Size + 2) * i + i + 1 + Size + 1);
                }
            }
            if(k == Size + 2) {
                if(b[i] == '2'||b[i] == '3'||b[i] == '4'||b[i] == '5'||b[i] == '6'||b[i] == '8'||b[i] == '9') {
                    horizontal((Size + 2)*i + i + 2,Size);
                }
            }
            if(k == Size * 2 + 3) {
                if(b[i] == '9' || b[i] == '0' || b[i] == '2' || b[i] == '3' || b[i] == '5' ||b[i] == '6' || b[i] == '8') {
                    horizontal((Size + 2)*i + i + 2,Size);
                }
            }
        }
        for(int i = 1; i<=(Size + 2)*len + len-1; i++) {
            cout<<a[i];
        }
        cout<<endl;
    }
    cout<<endl;
}
int main() {
    while(1) {
        int size;
        cin>>size;
        if(!size) {
            break;
        }
        char tmp[5555];
        cin>>tmp;
        Paint(size,tmp);
    }
    return 0;
}

三、宇航员
思路:求宇航员的位置比较简单,直接将初始位置相应加减即可。麻烦的是求方向,思路要清晰可以直接模拟出方向。

#include<iostream>
using namespace std;
int main() {
    int t;
    cin >> t;
    while(t--) {
        int n,p=0,q=2,x=0,y=0,z=0;
        cin >> n;
        for(int i=1; i<=n; i++) {
            string s;
            int d;
            cin >> s >> d;
            if(s=="left") {
                if(p==0) {
                    if(q==1) {
                        p=2;
                    }
                    if(q==2) {
                        p=4;
                    }
                    if(q==4) {
                        p=5;
                    }
                    if(q==5) {
                        p=1;
                    }
                } else if(p==1) {
                    if(q==0) {
                        p=5;
                    }
                    if(q==2) {
                        p=0;
                    }
                    if(q==3) {
                        p=2;
                    }
                    if(q==5) {
                        p=3;
                    }
                } else if(p==2) {
                    if(q==0) {
                        p=1;
                    }
                    if(q==1) {
                        p=3;
                    }
                    if(q==3) {
                        p=4;
                    }
                    if(q==4) {
                        p=0;
                    }
                } else if(p==3) {
                    if(q==1) {
                        p=5;
                    }
                    if(q==2) {
                        p=1;
                    }
                    if(q==4) {
                        p=2;
                    }
                    if(q==5) {
                        p=4;
                    }
                } else if(p==4) {
                    if(q==0) {
                        p=2;
                    }
                    if(q==2) {
                        p=3;
                    }
                    if(q==3) {
                        p=5;
                    }
                    if(q==5) {
                        p=0;
                    }
                } else if(p==5) {
                    if(q==0) {
                        p=4;
                    }
                    if(q==1) {
                        p=0;
                    }
                    if(q==3) {
                        p=1;
                    }
                    if(q==4) {
                        p=3;
                    }
                }
            } else if(s=="right") {
                if(p==0) {
                    if(q==1) {
                        p=5;
                    }
                    if(q==2) {
                        p=1;
                    }
                    if(q==4) {
                        p=2;
                    }
                    if(q==5) {
                        p=4;
                    }
                } else if(p==1) {
                    if(q==0) {
                        p=2;
                    }
                    if(q==2) {
                        p=3;
                    }
                    if(q==3) {
                        p=5;
                    }
                    if(q==5) {
                        p=0;
                    }
                } else if(p==2) {
                    if(q==0) {
                        p=4;
                    }
                    if(q==1) {
                        p=0;
                    }
                    if(q==3) {
                        p=1;
                    }
                    if(q==4) {
                        p=3;
                    }
                } else if(p==3) {
                    if(q==1) {
                        p=2;
                    }
                    if(q==2) {
                        p=4;
                    }
                    if(q==4) {
                        p=5;
                    }
                    if(q==5) {
                        p=1;
                    }
                } else if(p==4) {
                    if(q==0) {
                        p=5;
                    }
                    if(q==2) {
                        p=0;
                    }
                    if(q==3) {
                        p=2;
                    }
                    if(q==5) {
                        p=3;
                    }
                } else if(p==5) {
                    if(q==0) {
                        p=1;
                    }
                    if(q==1) {
                        p=3;
                    }
                    if(q==3) {
                        p=4;
                    }
                    if(q==4) {
                        p=0;
                    }
                }
            } else if(s=="up") {
                int t=p;
                p=q;
                if(t==0||t==1||t==2) {
                    q=t+3;
                } else q=t-3;
            } else if(s=="down") {
                int t=q;
                q=p;
                if(t==0||t==1||t==2) {
                    p=t+3;
                } else p=t-3;
            } else if(s=="foward") {

            } else if(s=="back") {
                if(p==0||p==1||p==2) {
                    p=p+3;
                } else p=p-3;
            }
            if(p==0) {
                x+=d;
            }
            if(p==1) {
                y+=d;
            }
            if(p==2) {
                z+=d;
            }
            if(p==3) {
                x-=d;
            }
            if(p==4) {
                y-=d;
            }
            if(p==5) {
                z-=d;
            }
        }
        cout << x <<" "<< y <<" "<< z <<" "<< p << endl;

    }

    return 0;
}

四、摘花生
思路:模拟,注意中间几个判断break的条件。

#include<bits/stdc++.h> 
using namespace std;
typedef struct pos{
    int x,y,value;
}pos;
struct pos a[4100]={0};

bool cmp(pos a,pos b)
{
    return a.value>b.value;
}
int main()
{
    int num=0,n=0,m=0,k=0;
    while(scanf("%d",&num)!=-1)
    {
        while(num--)
        {
            scanf("%d%d%d",&m,&n,&k);
            int temp=0,cnt=0;
            memset(a,0,sizeof(a));

            for(int i=0;i<m;i++)
                for(int j=0;j<n;j++)
                {
                    scanf("%d",&temp);
                    if(temp)
                    {
                        a[cnt].x=j;a[cnt].y=i;a[cnt].value=temp;
                        cnt++;
                    }
                }
                sort(a,a+cnt,cmp);
                int sum=0,time=0;
                for(int i=0;i<cnt;i++)
                {
                    if(i==0)
                    {
                        time=2*a[0].y+3;
                        if(time>k) break;
                        sum+=a[0].value;
                        time=a[0].y+2;
                        continue;
                    }
                    time+=abs(a[i].x-a[i-1].x)+abs(a[i].y-a[i-1].y)+1;
                    if(time+a[i].y+1>k) break;
                    sum+=a[i].value;
                }

                printf("%d\n",sum);
        }
    }
    return 0;
}

五、整数的个数
难度不好说。。。。(手动坏笑)

#include<iostream>
#include<algorithm>
using namespace std;
int a1[10001],b[1001];
int main() {
    int n,a=0,b=0,c=0;
    cin>>n;
    for(int i=1;i<=n;i++){
      cin>>a1[i];
    }
    for(int i=1;i<=n;i++){
        if(a1[i]==1) a++;
        if(a1[i]==5) b++;
        if(a1[i]==10) c++;
    }
    cout<<a<<endl<<b<<endl<<c; 
    return 0;
}

六、