美团校园招聘笔试例题一---C语言

该篇博客介绍了如何使用C语言解决一个实际问题:当有n个业务员按照业务能力从高到低编号,并各自有一个1~n的意向顺序表示希望去的业务区域时,如何按优先级分配业务区域。程序通过动态分配内存和多重循环来实现,确保编号小的业务员优先选择其意向区域。
摘要由CSDN通过智能技术生成

一、美团打算选调 n 名业务骨干到 n 个不同的业务区域,本着能者优先的原则,公司将这 n 个人按照业务能力从高到底编号为 1~n 。编号靠前的人具有优先选择的权力,每一个人都会填写一个意向,这个意向是一个 1~n 的排列,表示一个人希望的去的业务区域顺序,如果有两个人同时希望去某一个业务区域则优先满足编号小的人,每个人最终只能去一个业务区域。
例如 3 个人的意向顺序都是 1 2 3 ,则第一个人去 1 号区域,第二个人由于 1 号区域被选择了,所以只能选择 2 号区域,同理第三个人只能选择 3 号区域。最终请你输出每个人最终去的区域。

C语言版本

	#include <stdio.h>
	#include <string.h>
	#include <stdlib.h>
	
	int main()
	{
	    int n;    //业务员数量
	    int a[300][300]; //业务员意向
	    int i,j,h,k=1;
	    int temp; //中间值
	    int flag=1; 
	
	    scanf("%d",&n);  //输入业务员数量
	    for(i=0;i<n;i++)   //输入业务员意向,并存入数组中
	    {
	        for(j=0;j<n;j++)
	        {
	            scanf("%d ",&a[i][j]);
	        }
	        scanf("\n");
	    }
	    
	    int* b=(int*)malloc(n*sizeof(int)); //动态分配
	    
	    b[0] = *(*(a));
	
	    for(i=1;i<n;i++)
	    {
	        for(j=0;j<n;j++)
	        {
	            for(h=0;h<k;h++)
	            {
	                if(*(*(a+i)+j) == b[h]) //不满足条件,直接j++
	                {
	                    flag=0; //退出
	                    break;
	                }
	                else
	                {
	                    flag=1;
	                }
	            }
	            if(flag != 0) //说明a[i][j]不等于b[]中任何一位
	            {
	                b[k]=*(*(a+i)+j);k++;  //存入输出的数组中
	                // printf("%d\n",k);
	                break;
	            }
	        }
	    }
	    
	    for(h=0;h<n;h++)
	    {
	        printf("%d ",b[h]);
	    }
	    
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值