[互联网面试笔试汇总C/C++-2] 网易有道-1

1、打印如下形式的矩阵;
 n=5:
 1   2   9   10 25
 4   3   8   11 24
 5   6   7   12 23
 16 15 14 13 22
 17 18 19 20 21
 n=6:
 1   2   9   10 25 26
 4   3   8   11 24 27
 5   6   7   12 23 28
 16 15 14 13 22 29
 17 18 19 20 21 30

 36 35 34 33 32 31

这种题目就是找规律,无非就是你花多长时间找出来而已。

我们假设下标为(i,j),i,j都从1开始,规律如下(比较懒,推倒过程省去):

当i>=j时

如果i为偶数:number[i][j] = i*i + 1 - j;

如果i为奇数:number[i][j] = (i-1)*(i-1) + j;

当j>=i时,

如果j为偶数:number[i][j] = (j-1)*(j-1) + i;

如果j为奇数:number[i][j] = j*j + 1 - i;

代码如下:

#include<stdio.h>

void printMatrix(int n);

int main()
{
    printMatrix(5);
    system("pause");
    return 0;
}

void printMatrix(int n){
     if(n < 1)
          return;
     else{
          int i ,j;
          for(i = 1;i <=n;i++){
                for(j = 1;j <= n;j++){
                      int num;
                      if(j > i){
                           if(j%2)
                               num = j*j + 1 -i;
                           else
                               num = (j-1)*(j-1)+i;
                           printf("%d ",num);
                      }else{
                           if(i%2)
                               num = (i-1)*(i-1)+j;
                           else
                               num = i*i + 1 - j;
                           printf("%d ",num); 
                      }
                     
                }
                printf("\n");
          }
     }     
}

2、36匹马赛跑,跑道同时只能容许6匹马。而且36匹马速度不同,但是每次跑的速度恒定。
 问,跑多少次可以选出第一,第二,第三名。

分析:

第一步,我们将36匹马分成6支队伍,编号如下:

A1,A2,...,A6;

B1,B2,...,B6;

C1,C2,...,C6;

D1,D2,...,D6;

E1,E2,...,E6;

F1,F2,...,F6;

每支队伍单独跑一次,这样总共跑了6次。我们假设跑完的排名和上面的顺序是一样的(这个对结果无影响)。

第二步,让每支队伍的第一名在一起跑,取前三名,我们假设是A1,B1和C1.那么A1肯定是整体的第一名,下面只剩下第二和第三两匹马了。

第三步,有可能成为第二名和第三名的马的数量是有限的,基于第一和第二步,我们可以推出可能成为第二和第三名的马有A2,A3,B1,B2,C1,一共五匹。让这五匹马一起跑,选出前两名,就分别是整体的第二和第三名。

总结:第一步,跑了6次;第二步,跑了1次;第三步,跑了1次,一共8次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值