軟件工程研究生面試機試考題-2018

題目連接:https://acm.ecnu.edu.cn/contest/61/ios

 

解題方法,對二維數組的每一行進行從大到小的排序,而後將第一列數字(每行最大的數)加和數組

#include<stdio.h>
#include<algorithm>
using namespace std;
int pie[110][110];
bool cmp(int a,int b){
    return a>b;
}
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            scanf("%d",&pie[i][j]);
        }
    }
    for(int i=0;i<n;i++){
        sort(pie[i],pie[i]+m,cmp);
    }
    /*輸出測試 
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            printf("%d ",pie[i][j]);
        }
        printf("\n");
    }*/ 
    int sum=0;
    for(int i=0;i<n;i++){
        sum+=pie[i][0];
    }
    printf("%d\n",sum);
    return 0;
}

 

解題思路:楊輝三角,A[i][j]=A[i-1][j-1]+A[i-1][j],圖形輸出題須要觀察找出規律,逐行輸出。測試

#include<stdio.h>
int main(){
    int yh[21][21];
    //初始化
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            yh[i][j]=0;
        }
    }
    for(int i=0;i<n;i++){//第一豎行賦值 
        yh[i][0]=1;
    }
    for(int i=1;i<n;i++){//賦值 
        for(int j=1;j<=i;j++){
            yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
        }
    } 
    for(int i=0;i<n;i++){
        for(int j=0;j<=i;j++){
            printf("%d",yh[i][j]);
            if(j!=i){
                printf(" ");//最後一個數字後無空格 
            } 
        }
        printf("\n");
    }
    return 0;
} 

 

解題思路:字符串按字典序從大到小排序spa

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(string a,string b){
    return a>b;
}
int main(){
    string str[10001];
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>str[i];
    }
    sort(str,str+n,cmp);
    for(int i=0;i<n;i++){
        cout<<str[i];
    }
    cout<<endl;
    return 0;
}

 

解題方法:延長數組(利用週期循環)code

#include<stdio.h>
int main(){
    int men[4000],women[4000];
    int m,n,k;
    scanf("%d%d%d",&m,&n,&k);
    int re1 = k/m+1;
    int re2 = k/n+1;
    int z=0,p=0;
    for(int i=0;i<re1;i++){
        for(int j=1;j<=m;j++){
            men[z]=j;
            z++;
        }
    }
    for(int i=0;i<re2;i++){
        for(int j=1;j<=n;j++){
            women[p]=j;
            p++;
        }
    }
    for(int i=0;i<k;i++){
        printf("%d %d\n",men[i],women[i]);
    }
    return 0;
}

 

有兩道題不會寫,一道是動態規劃,另外一個則是數據範圍比較大,待補充。blog

相關文章
相關標籤/搜索