剑指offer————字符串组合扩展题目立方体放数问题
2014-10-16 10:52
423 查看
输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点,是的正方体上三组相对的面上的4个顶点的和都相等。
就是将这个数组进行全排列之后,验证各个面上的数字的和是否相等即可。
#include<iostream> using namespace std; bool isMatch(int A[]){ if(A==NULL){ return false; } int r1 = A[0] + A[1] + A[2] + A[3]; int r2 = A[4] + A[5] + A[6] + A[7]; int r3 = A[0] + A[2] + A[4] + A[6]; int r4 = A[1] + A[3] + A[5] + A[7]; int r5 = A[0] + A[1] + A[4] + A[5]; int r6 = A[2] + A[3] + A[6] + A[7]; if(r1 == r2 ){ if( r3 == r4){ if( r5 == r6){ return true; } } } return false; } void count_case(int A[],int length,int index,bool &is){ if(A==NULL || length<=0 || index<0){ return; } if(index == length){ return; } if(isMatch(A)){ is = true; return; }else { for(int p = index; p <= length ; ++p){ swap(A[index],A[p]); count_case(A,length,index+1,is); swap(A[index],A[p]); } } } bool cub_case(){ const int index = 8; int A[index]={1,2,3,4,5,6,7,8}; bool is = false; count_case(A,index-1,0,is); return is; } int main(){ bool i = cub_case(); cout<<i<<endl; system("pause"); return 0; }
就是将这个数组进行全排列之后,验证各个面上的数字的和是否相等即可。
相关文章推荐
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类
- 【剑指offer】字符串的组合
- 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
- 剑指offer 28题 【分解让复杂问题简单】字符串的排列
- 剑指Offer面试题28字符串的排列组合(递归和栈)
- 剑指offer:字符串的组合(java)
- 【剑指offer】题目1508:把字符串转换成整数
- 【剑指offer】4.4分解让复杂问题简单化——面试题28:字符串的排列
- 剑指Offer----面试题35:扩展----第一个字符串中删除第二个字符串中出现过的所有字符
- 剑指offer剖析__空格替换字符串问题
- 【剑指offer】字符串的组合
- 【剑指offer】字符串的组合
- 剑指offer——面试题39:扩展问题判断一个树是否是平衡二叉树(递归)
- 【剑指Offer面试编程题】题目1362:左旋转字符串--九度OJ
- 【剑指offer】字符串的排列与组合
- 【剑指offer28】字符串的全排列和组合
- 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
- 【剑指Offer面试编程题】题目1508:把字符串转换成整数--九度OJ
- 字符串的全排列和组合递归非递归--排列组合扩展问题
- 牛客网 - 剑指Offer - 考点:字符串 题目:替换kong