2017美团面试算法题
来源:互联网 发布:比特币交易所java源码 编辑:程序博客网 时间:2024/05/21 15:44
9月份去参加美团的面试,遇到一个挺有意思的题,哈哈哈,现摘录如下:
问题描述:
将1到9九个数字填入上图,每个数字能且仅能使用一次,使得三条边的四个数字之和相等。
解答:将a1到a9排成一排,然后求全排列,如果满足a1+a2+a3+a4==a4+a5+a6+a7==a1+a7+a8+a9,则为输出。据此编程如下:
#include <iostream>using namespace std;int array[10];bool used[10];int cnt = 0;bool Judge(){int sum1, sum2, sum3;sum1 = sum2 = sum3 = 0;for (int i = 1; i <= 4; i++)sum1 += array[i];for (int i = 4; i <= 7; i++)sum2 += array[i];for (int i = 7; i <= 9; i++)sum3 += array[i];sum3 += array[1];if (sum1 == sum2 && sum2 == sum3)return true;return false;}void backtrack(int k,int n){if (k==n){if (Judge()){cnt++;printf("find one! count=%d\n",cnt);printf("第一条边为:%d-%d-%d-%d\n", array[1], array[2], array[3], array[4]);printf("第二条边为:%d-%d-%d-%d\n", array[4], array[5], array[6], array[7]);printf("第三条边为:%d-%d-%d-%d\n", array[1], array[7], array[8], array[9]);printf("\n");}return;}for (int i = 1; i < n;i++){if (!used[i]){used[i] = true;array[k] = i;backtrack(k + 1, n);used[i] = false;}}}int main(){backtrack(1,10);system("pause");return 0;}
运行上述代码,可得结果如下:
进而可知,一共有864种情况。
0 0
- 2017美团面试算法题
- 美团面试的两道算法题
- 美团面试的两道算法题
- 美团2017面试经历
- 美团面试程序题
- 美团面试程序题
- 【美团点评】无人驾驶算法工程师 2017-09-03电话面试
- 2015美团算法工程师笔试、面试之旅
- 美团面试 2017年秋季
- 面试---美团
- 美团面试总结
- 美团面试经历
- 美团面试
- 美团面试总结
- 美团面试总结
- 美团面试经历
- 美团面试
- 美团面试总结
- python 读写csv文件(一)
- jquery实现div的拖拽效果
- 给开发人员培训时的语录
- 【深度学习笔记】个人阅读的Deep Learning方向的paper整理
- Java学习总结第二十一天Java集合概述
- 2017美团面试算法题
- Android安全攻防战,反编译与混淆技术完全解析(下)
- Qt 中设置窗口边框的圆角
- java.util.ConcurrentModificationException
- JS DOM.style.height 取不到的情况 为空的情况
- Java反射机制在Spring IOC中的应用
- SAP权限管理,我的理解
- vim多文件编辑,可视模式, 视图操作(4)
- 重入锁 ReentrantReadWriteLock