zoukankan      html  css  js  c++  java
  • 软件工程研究生面试机试考题-2018

    题目链接:https://acm.ecnu.edu.cn/contest/61/

    解题方法,对二维数组的每一行进行从大到小的排序,然后将第一列数字(每行最大的数)加和

    #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("
    ");
        }*/ 
        int sum=0;
        for(int i=0;i<n;i++){
            sum+=pie[i][0];
        }
        printf("%d
    ",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("
    ");
        }
        return 0;
    } 

    解题思路:字符串按字典序从大到小排序

    #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;
    }

    解题方法:延长数组(利用周期循环)

    #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
    ",men[i],women[i]);
        }
        return 0;
    }

    有两道题不会写,一道是动态规划,另一个则是数据范围比较大,待补充。

  • 相关阅读:
    c# 24种设计模式
    .net如何处理高并发socket,建立高性能健壮的socket服务
    对于devexpress gridview 内插图加加进度条等的一点解读
    devexpress 如何读demo源码 总结
    DevExpress之TreeList节点绑定图片
    DevExpress LookUpEdit 下拉框基本操作
    dev NavBarControl控件
    DevExpress如何实现皮肤的添加及本地化
    vs2015未能计算子级
    c#networkcomms protobuf-net 文件加载出现问题
  • 原文地址:https://www.cnblogs.com/nyist0/p/10233469.html
Copyright © 2011-2022 走看看