模拟

输入一个四行五列的矩阵,找出每列最大的两个数。

输入描述:

每个用例包含四行,每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。

输出描述:

    可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。     输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。
复制代码
#include <bits/stdc++.h>
using namespace std;

int data1[4][5];
int res[5][2];

int main(){

    while(scanf("%d",&data1[0][0])!=EOF){
        memset(res,-1,10*sizeof(int));
        //cout<<res[0][1]<<" "<<res[0][2]<<endl;;
        int i=1;
        while(i<20){
            scanf("%d",&data1[i/5][i%5]);
            //cout<<i/4<<" "<<i%5<<endl;
            i++;
        }
        /*for(i=0;i<4;i++){
            for(int j=0;j<5;j++){
                cout<<data[i][j]<<" ";
            }
            cout<<endl;
        }*/
        for(i=0;i<4;i++){
            for(int j=0;j<5;j++){
                if(res[j][0]==-1){
                    res[j][0]=i;
                    //cout<<data[i][j]<<"fangl"<<endl;
                }
                else if(res[j][1]==-1){
                    res[j][1]=i;
                    //cout<<data[i][j]<<"fangl1"<<endl;
                }
                //else if(data[i][j]==data[res[j][0]][j]||data[i][j]==data[res[j][1]][j])
                  //  continue;
                else if(data1[i][j]>data1[res[j][0]][j]&&data1[i][j]>data1[res[j][1]][j]){
                    if(data1[res[j][0]][j]>data1[res[j][1]][j]){
                        res[j][1]=i;
                    }
                    else
                        res[j][0]=i;
                }
                else if(data1[i][j]>data1[res[j][0]][j]){
                    res[j][0]=i;
                    //cout<<data[i][j]<<"fhuanl"<<endl;
                }
                else if(data1[i][j]>data1[res[j][1]][j]){
                    res[j][1]=i;
                    //cout<<data[i][j]<<"fang333l"<<endl;
                }
            }
        }
        int temp;
        for(i=0;i<5;i++){
            if(res[i][0]>res[i][1]){
                temp=res[i][0];
                res[i][0]=res[i][1];
                res[i][1]=temp;
            }
        }
        for(i=0;i<2;i++){
            for(int j=0;j<5;j++){
                //cout<<res[j][i]<<"hhh"<<endl;
                printf("%d ",data1[res[j][i]][j]);
            }
            printf("\n");
        }
    }
    return 0;
}
复制代码

 给出年分m和一年中的第n天,算出第n天是几月几号。

复制代码
#include <bits/stdc++.h>
using namespace std;

int days[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
                 {31,29,31,30,31,30,31,31,30,31,30,31}};

void cpt(int ind,int day){
    int i=0;
    while(day-days[ind][i]>0){
        day-=days[ind][i++];
    }
    printf("-%02d-%02d\n",i+1,day);
}

int main(){
    int year,day;
    while(scanf("%d %d",&year,&day)!=EOF){
        cout<<year;
        int ind;
        if((year%4==0&&year%100!=0)||(year%400==0))
            ind=1;
        else
            ind=0;
        cpt(ind,day);
    }
    return 0;
}
复制代码

 螺线形矩阵1-n方

复制代码
#include <bits/stdc++.h>
using namespace std;

#define maxn 1000

int X[4]={1,0,-1,0};//移动方向
int Y[4]={0,-1,0,1};

int res[maxn][maxn];

int turn(int n,int x,int y){
    if((res[x][y-1]!=-1)&&(x-1<0||res[x-1][y]!=-1)&&(y+1>=n||res[x][y+1]!=-1))
        return 0;
    if((x+1>=n||res[x+1][y]!=-1)&&(y+1>=n||res[x][y+1]!=-1)&&(res[x-1][y]!=-1))
        return 1;
    if((x+1>=n||res[x+1][y]!=-1)&&(y-1<0||res[x][y-1]!=-1)&&(res[x][y+1]!=-1))
        return 2;
    if((y-1<0||res[x][y-1]!=-1)&&(res[x-1][y]!=-1)&&(res[x+1][y]!=-1))
        return 3;
    return -1;
}

int main(){
    memset(res,-1,maxn*maxn*sizeof(int));
    int n;
    cin>>n;
    res[0][0]=1;//初始位置
    int nextmove=3;
    int x=0,y=0;
    for(int i=2;i<=n*n;i++){
        if(turn(n,x,y)!=-1)
            nextmove=turn(n,x,y);
        x+=X[nextmove];
        y+=Y[nextmove];
        res[x][y]=i;

    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<res[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
复制代码

 

posted @   完全感覚Dreamer  阅读(172)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示