腾讯 2015秋招笔试题 编程2:九宫格填数

题目 2: 有下图的题解,请用 C/C++ 代码来列出满足下图 0-100 内的所有答案。

配合加减乘除,使得九宫格横竖都等于4.

智力冲浪 数字推理

请将八个数字填入方格中,在数字不允许重复的情况下,使横行和竖行的答案都等于4,你能填出来吗?

横向满足:

□+□-9=4,
□-□*□=4
□+□-□=4

另外纵向还满足其他条件,具体见下图:

分析:

用a1~a9表示九个数,其中a3=9,根据图中的信息,可以列出如下六个方程,

a1+a2-9=4       (1)

a4-a5*a6=4      (2)

a7+a8-a9=4      (3)

a1+a4/a7=4      (4)

a2-a5*a8=4       (5)

9-a6-a9=4         (6)

6个方程8个未知数,自然解不出来的,所以如果在确定2个,则另外6个就可以算出来了,那么确定那两个呢?分析上面六个式子,由方程(4)则a1<=4范围一下缩小了很多

另外由(6)a6+a9=5,则a6<=5,a9<=5;那么a6是否是另一个要确定的数呢?假设是,我们继续往下算,这样0=<a1<=4,0=<a6<=5,a2、a9很容易的由a1、a6表示,但是求其他数

的时候,我发现有a4/a7,a5*a8两项,则其结果必然是两次方程,求解比较麻烦,所以a6不能是另一个要确定的数了。二次项产生的根源是a4/a7,a5*a8所以,所以避免求解二次方程

要确定a4、a5、a7、a8中的一个又(3)式a7+a8=4+a9<=9,则a7<=9,a8<=9;

所以取固定a1,a7;则分别求得各项如下:

a2=13-a1;

a4=(4-a1)*a7;

a8=(a2-4)*(9-a7)/(a2+a4-8);

a6=9-a7-a8;

a9=5-a6;

a5=(a2-4)/a8;

若求得的某一个值不在0-100的范围内,则此时的a1,a7不满足要求,这样只需两层循环即可;

两一个重要的问题是题中未说明a1-a9是整数,所以题目应该是有无数个解得;

设a1,a7未整数,则可以算得共有27组解,其中一组全部是整数。

时间复杂度较高的算法 代码:

#include<stdio.h>
#include<set>
using namespace std;int main() {double a[10];a[3] = 9;set<double> c; // 判断重复int count=0;        for(int i = 0; i <= 100; i++) {for(int j = 0; j <= 100; j++) {c.clear();c.insert(a[3]);a[1] = i;if(c.find(a[1]) != c.end()) {continue;}c.insert(a[1]);  // 判断重复a[7] = j;if(c.find(a[7]) != c.end()) {continue;}c.insert(a[7]);    // 判断重复a[2] = 13 - a[1];if(a[2] < 0) {continue;}if(c.find(a[2]) != c.end()) {continue;}c.insert(a[2]); // 判断重复+小于0a[4] = (4 - a[1])*a[7];if(a[4] < 0) {continue;}if(c.find(a[4]) != c.end()) {continue;}c.insert(a[4]);  // 判断重复+小于0if(a[2] + a[4] == 8) {continue;    // 判断除0}a[8] = (a[2] - 4)*(9 - a[7])/(a[2] + a[4] - 8);if(a[8] < 0) {continue;}if(c.find(a[8]) != c.end()) {continue;}c.insert(a[8]);   // 判断重复+小于0a[6] = 9 - a[7] - a[8];if(a[6] < 0) {continue;}if(c.find(a[6]) != c.end()) {continue;}c.insert(a[6]);  // 判断重复+小于0a[9] = 5 - a[6];if(a[9] < 0) {continue;}if(c.find(a[9]) != c.end()) {continue;}c.insert(a[9]); // 判断重复+小于0if(a[8] == 0) {continue;    // 判断除0}a[5] = (a[2] - 4) / a[8];if(a[5] < 0) {continue;}if(c.find(a[5]) != c.end()) {continue;}c.insert(a[5]);  // 判断重复+小于0for(int k = 1; k <= 9; k++) {printf("%f ", a[k]);}count++;           printf("\n");}}printf("Total: %d\n",count); return 0;
}

总结: 若全部是整数则只有一组解, 否则有无数组解, 与所取的精度有关.

参考:

[16腾讯在线笔试题2]-填数字 - CiaoLiang的专栏 -CSDN博客  http://blog.csdn.net/ciaoliang/article/details/48253749

C++版  http://blog.csdn.net/l19920622/article/details/48261261

Java版 参考: http://blog.csdn.net/u010660138/article/details/48266297

腾讯 2015秋招笔试题 编程题2:九宫格填数相关推荐

  1. 2019届小米秋招笔试题第一题_厨艺大赛奖金

    1.题目描述   小米食堂每年都会举办一次厨艺大赛,假设参赛的厨师一共有n位(n < 1000),比赛结束后没有公布评分,但是站在领奖台上的一排厨师中每位厨师都能看到与自己相邻的厨师(左或者右) ...

  2. 2020大疆秋招笔试题B卷

    2020大疆秋招笔试题B卷 选择题(选项没抄下来)10道记了9道 1.关于常指针和指向常量的指针 2.多线程调用如下函数,a,b,c哪些需要加锁保护 int a = 0; void knit() {s ...

  3. 2021网易秋招笔试题(Android开发)

    网易笔试题(2021.08.08) 校招的笔试题通常是4道编程题,时间为2个小时,每题25分. 2021秋招笔试题总结如下,包含问题和代码实现. 题1:查找关键词 查找关键词(单词在文章中出现频率&g ...

  4. 酷狗java秋招笔试题

    酷狗java秋招笔试题 单选题 1.在命中率极高的缓存设计中,时间复杂度最差的数据结构是( B ). A. 数组 B. 链表 C. 树 D. 哈希表 2.某二叉树共有11个结点,其叶子结点只有2个.则 ...

  5. 字节跳动-2020秋招-笔试题剖析【5道算法题】

    字节跳动-2020秋招-笔试题剖析[5道算法题],限时120分钟. 让我们一起来看看这些题吧! 题一:模型文件去重 [题目描述] 抖音上不同的用户类型我们有不同的用户模型文件. 我们有一个模型配置文件 ...

  6. 百度秋招笔试三道编程题(2021-09-07)

    通知:最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在[TechGuide]了,私信公众号回复[美团]或者[百度]即可获得最实时的笔试题解啦! 通知:最新的秋招笔试编程题题目.思路以及参考 ...

  7. 字节跳动2020届秋招笔试题

    字节跳动2020届秋招第一批笔试题(2019.8.11) 文章目录 字节跳动2020届秋招第一批笔试题(`2019.8.11`) 第一题[编程题25分]: 闹钟叫醒去上课 第二题[编程题25分]: 秘 ...

  8. 58同城秋招笔试题解答 --map模式按value进行排序

    求字符串中字母重叠的次数并按要求输出(笔试题) 题目描述: 给定一个字符串,求出字母重叠出现的次数,最后按字典格式输出. 输入示例: aaabccbbbfffaddbaa 输出示例: a : 5 b ...

  9. 2017酷家乐秋招笔试题——后台开发

    楼主,昨天晚上做了酷家乐的笔试题,本来发来说是19:00-21:00两个小时,结果登入考试系统发现倒计时只有一个小时(坑!).不过题量很少,主要是选择题和简答题,简答题有一道是要编程的,当时内心太慌没 ...

最新文章

  1. 适合 Kubernetes 初学者的一些实战练习 (三)
  2. 云网管—云上构建网络自动化体系
  3. CV+NLP,使用tf.Keras构建图像搜索引擎
  4. 文档内容结构化技术探索
  5. PIX、ASA防火墙清除配置
  6. SOA渐行渐近-怎样给IT系统一个新视角?
  7. 博弈论总结 四大博弈模型 SG函数
  8. 用excel制作,出入库信息管理表,动态库存表
  9. 网站SEO实践之 - 网站关键词库扩展的几种方法
  10. 基于yolov5s+bifpn实践隧道裂缝裂痕检测
  11. dgraph的使用总结--------docker安装使用
  12. 基于安卓Android和SSH的汽车票管理系统设计与实现
  13. #今日论文推荐#CVPR 2022 | 道高一尺,魔高一丈,ConvNet还是ViT?
  14. OpenWrt支持usb tethering
  15. 你不了解的 @reduxjs/toolkit 中的createApi
  16. 慢聊Go之Go常见的Web 开发框架
  17. C语言程序设计:这里输入一个数,分别求其平方值、立方值和平方根。
  18. Halcon例程分析8:投影变换矫正倾斜图像
  19. echarts legend不显示
  20. 收藏 年度大盘点 可信计算相关(国家、部委、省市)法律、法规、政策、规划汇总

热门文章

  1. FFmpeg是什么?(Fast Forward Moving Picture Experts Group)(AVFormat、AVCodec、AVFilter、AVDevice、AVUtil)
  2. 第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题3题
  3. [Android] 恐龙百科v2.1 收集大量恐龙图片和资料
  4. 6 最小覆盖矩形(Smallest Rectangle Enclosing Black Pixels)
  5. Javac如何编译程序。
  6. 贝加莱学习笔记第五节
  7. 在线学习Node.js——Day6
  8. gdb调试 出现value optimized out解决方法
  9. poj—2488骑士的旅程(深搜)
  10. 51nod 1340 地铁环线