美文网首页
二面算法题

二面算法题

作者: 门门_ | 来源:发表于2019-08-13 16:57 被阅读0次

    1.不重复的3位数
    问题描述:用1,2,3,4共4个数字,能组成多好个相互不同且无重复的3位数?并打印。

    #include<stdio.h>
    int main(void)
    {
        int a[]={1,2,3,4},count=0;
        int i,j,k,b[3];
        
        for(i=0;i<4;i++)
        for(j=0;j<4;j++)
        for(k=0;k<4;k++)
        {
            if(a[i]!=a[j]&&a[j]!=a[k]&&a[k]!=a[i])
            {   count++;
                printf("%d%d%d ",a[i],a[j],a[k]);
                if(count%5==0)  printf("\n");
            }
         } 
     } 
    

    输出:

    123 124 132 134 142
    143 213 214 231 234
    241 243 312 314 321
    324 341 342 412 413
    421 423 431 432
    



    2.结束问题
    问题描述:小明有5本新书,要借给A,B,C三位小朋友,若每人每次只能借一本书,则有多少种借法?分别是?

    #include<stdio.h>
    int main(void)
    {
        char newBook[5]="ABCDE";
        int count=0;
        int i,j,k;
        
        for(i=0;i<5;i++)
            for(j=0;j<5;j++)
                for(k=0;k<5;k++)
                {
                    if(newBook[i]!=newBook[j] &&newBook[j]!=newBook[k] && newBook[k]!=newBook[i] )
                    {
                        printf("%c-%c-%c\n",newBook[k],newBook[j],newBook[i]);
                        count++;
                    }
                }
                
        printf("一共%d种",count);
    }
    

    输出:

    C-B-A   D-B-A   E-B-A   B-C-A   D-C-A   E-C-A   B-D-A   C-D-A   E-D-A   B-E-A
    C-E-A   D-E-A   C-A-B   D-A-B   E-A-B   A-C-B   D-C-B   E-C-B   A-D-B   C-D-B
    E-D-B   A-E-B   C-E-B   D-E-B   B-A-C   D-A-C   E-A-C   A-B-C   D-B-C   E-B-C
    A-D-C   B-D-C   E-D-C   A-E-C   B-E-C   D-E-C   B-A-D   C-A-D   E-A-D   A-B-D
    C-B-D   E-B-D   A-C-D   B-C-D   E-C-D   A-E-D   B-E-D   C-E-D   B-A-E   C-A-E
    D-A-E   A-B-E   C-B-E   D-B-E   A-C-E   B-C-E   D-C-E   A-D-E   B-D-E   C-D-E
    
    一共60种
    

    3.删除*号
    问题描述:现有一串字符需要输入,规定输入的字符串中只能包含字母和*号,编写程序,实现以下功能:除了字符串前后的*浩之外,将字符串中其他的*号全部去除。如: 输入****A*BC*DEF*G***,输出****ABCDEFG***

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
        char a[100]="****A*BCD****E*F*G***",b[100];
        int i,m,n,j;
        int count=0,k=0;
        for(i=0;i<strlen(a);i++)
        {
            if((a[i]>64&&a[i]<92)||(a[i]>96&&a[i]<113))
            count++;
            if(count==1) m=i-1; 
        }
        for(j=0;j<strlen(a)+1;j++)
        {
            if(j>m-1  &&count&& a[j]=='*') continue;
            if(j>m-1 && a[j]!='*') count--;
            b[k++]=a[j];
        }
        for(j=0;j<strlen(b);j++)  printf("%c",b[j]);
            
    
     } 
    

    输出:

    ****ABCDEFG***
    



    4.分鱼问题
    问题描述:A B C D E 五个人合伙夜间捕捞X条鱼,凌晨时疲倦不堪,于是各自在河边的树丛中睡着了。第二天,A第一个醒来,他将鱼平分成5分,把多余的一条鱼扔回河里,然后拿着自己的一份回家了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分成为5份,扔掉多余 的一条,然后拿走了自己的一份,依次类推。问这5人至少合伙捕捞到多少条鱼?每人醒来后看到的鱼的条数?
    提示:递归解决

    5.掷骰子
    问题描述:两个人轮流投掷,并将每次投掷的点数加起来,点数大的获得胜利,相同则为平局,模拟游戏过程,并求出100局后的胜出者。

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    int compare(int m,int n);
    
    int main(void)
    {
        int i;
        srand((unsigned)time(NULL));
        
        for(i=0;i<100;i++)
        {
            compare((rand()%6+1)+(rand()%6+1),(rand()%6+1)+(rand()%6+1));
        
        }
        printf("\n第%d场:",i);
         if(compare((rand()%6+1)+(rand()%6+1),(rand()%6+1)+(rand()%6+1))==1)  printf("甲胜");
        else if(compare((rand()%6+1)+(rand()%6+1),(rand()%6+1)+(rand()%6+1))==0) printf("平局");
        else printf("乙胜");
    }
    
    int compare(int m,int n)
    {
        if(m>n) return 1;
        else if(m==n) return 0;
        else return -1;
    }
    

    输出:

    第100场:乙胜
    .
    .
    .
    

    6.字符串匹配
    问题描述:输入一串字符,找出字符中匹配括号()的数目;

    相关文章

      网友评论

          本文标题:二面算法题

          本文链接:https://www.haomeiwen.com/subject/tkchcqtx.html