二面算法题

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

#include
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
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
#include
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;i64&&a[i]<92)||(a[i]>96&&a[i]<113))
        count++;
        if(count==1) m=i-1; 
    }
    for(j=0;jm-1  &&count&& a[j]=='*') continue;
        if(j>m-1 && a[j]!='*') count--;
        b[k++]=a[j];
    }
    for(j=0;j

输出:

****ABCDEFG***



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

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

#include
#include
#include

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.字符串匹配
问题描述:输入一串字符,找出字符中匹配括号()的数目;

你可能感兴趣的:(二面算法题)