模拟
输入一个四行五列的矩阵,找出每列最大的两个数。
输入描述:
每个用例包含四行,每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。输出描述:
可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。 输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。#includeusing 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< int i=1; while(i<20){ scanf("%d",&data1[i/5][i%5]); //cout< i++; } /*for(i=0;i<4;i++){ for(int j=0;j<5;j++){ cout<*/ for(i=0;i<4;i++){ for(int j=0;j<5;j++){ if(res[j][0]==-1){ res[j][0]=i; //cout< } else if(res[j][1]==-1){ res[j][1]=i; //cout< } //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< } else if(data1[i][j]>data1[res[j][1]][j]){ res[j][1]=i; //cout< } } } 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< printf("%d ",data1[res[j][i]][j]); } printf("\n"); } } return 0; }
给出年分m和一年中的第n天,算出第n天是几月几号。
#includeusing 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; }