• 微软面试题


    罗马数字共有七个,即
    I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。

    按照下面三条规则可以表示任意正整数。

    重复数次:一个罗马数字重复几次,就表示这个数的几倍。

    右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,
    表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗
    马数字,表示大数字减小数字。但是,左减不能跨越等级。
    比如,99不可以用IC表示,用XCIX表示

    基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个,比如40不能用XXXX,而用XL表示

    设计一个函数,将100(包括100)以内的整数转换成罗马数字,超过100不考虑
    int itor(int n,char* buf,int bufLength)
    其中,n是要转换的整数,buf是要输出的字符串,bufLength是buf的字符长度
    成功,返回0,否则,返回 -1;

    比如:
    char buf[256];
    result = itor(n,buf,sizeof(buf));

    when n = 28; result = 0, 输出"XXVIII";
    when n = 72; result = 0, 输出"LXXII";

    答案如下:

    #include <stdio.h>
    #include <string.h>

    static const char* a[] =
    {"","I","II","III","IV","V","VI","VII","VIII","IX"};
    static const char* b[] =
    {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","C"};
    static const char* c[] =
    {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "M"};

    int itor(int n, char *buf, int bufLength)
    {
        if (n < 0 || n > 100)
            return -1;

        int num1,num2, num3;

        num1 = n % 10;
        num2 = (n / 10) % 10;
        num3 = n / 100;

        int index = 0;

        if (strlen(c[num3]) + strlen(b[num2]) + strlen(a[num1]) > bufLength)
            return -1;

        strcpy(buf, c[num3]);
        strcat(buf, b[num2]);
        strcat(buf, a[num1]);

        return 0;
    }

    int main(int ac, char** av)
    {
        int i;
        char buffer[64] = {0};
        scanf("%d", &i);
        if (itor(i, buffer, 63) == 0)
            printf("%s\n", buffer);
    }

    ###################################################################
    有一个N*N的矩阵, 里面有N*N个数,这个矩阵的每一行,每一列都是排序好的,下面是一
    个例子
    1 3 7 9
    2 5 13 14
    6 7 25 26
    20 24 30 40
    现在设计一个算法,在这个矩阵中search一个数,要求尽可能快
    ####################################################################

    1、写一个在一百万个数字中求十个最大的数算法
    2、已知一个算法是NLog2N的,有没有办法把它搞成O(N)
    3、写一个inttochar的函数,int未知长度
    4、已知一组数据符合正态分布,如果要排序,用什么算法最快?
  • 相关阅读:
    Vasya and Multisets
    tp5.1 输出json格式字符串被转义
    异步委托(实现多线程的方式)
    模糊查询(like)
    webService
    EL表达式
    远程登陆服务器(window系统)
    output引用类型
    存储过程的定义、修改和删除
    leetcode刷题笔记一百六十二题 寻求峰值
  • 原文地址:https://www.cnblogs.com/kevinwan/p/371708.html
Copyright © 2020-2023  润新知