面试题28—相关题目

来源:互联网 发布:淘宝网哪里找货源 编辑:程序博客网 时间:2024/05/21 03:55
题目:输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体8个顶点,使得正方体上三组相对的面上的4个顶点的和相等。

代码示例:

#include<iostream>#include<string>#include<iomanip>using namespace std;void swap(int &c1,int &c2){int temp = c1;c1 = c2;c2 = temp;}void PrintAllKinds(int a[], int from, int to){if (a == NULL)return;if (from == to){if ((a[0] + a[1] + a[2] + a[3] == a[4] + a[5] + a[6] + a[7])&& (a[0] + a[2] + a[4] + a[6] == a[1] + a[3] + a[5] + a[7])&& (a[0] + a[1] + a[4] + a[5] == a[2] + a[3] + a[6] + a[7])){for (int i = 0; i <= to; i++)cout << a[i];cout << endl;}}else{for (int i = from; i <= to; i++){swap(a[from], a[i]);PrintAllKinds(a, from + 1, to);swap(a[from], a[i]);}}}int main(){int const n = 8;int a[n] = { 1,4,6,3,6,4,3,1};int from = 0;int to = n-1;PrintAllKinds(a, from, to);}