2016年省赛真题c/c++ c组 第七题 寒假作业 全排列+check+筛选条件

简介: 2016年省赛真题c/c++ c组 第七题 寒假作业 全排列+check+筛选条件

题目:


寒假作业


现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
(如果显示不出来,可以参见【图1.jpg】)
每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。


代码:


#include <iostream>
using namespace std;
int a[] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; 
int ans=0;
bool check()
{
  if(a[0]+a[1]==a[2]&&
    a[3]-a[4]==a[5]&&
    a[6]*a[7]==a[8]&&
    a[9]%a[10]==0&&       //相除的话要注意整除的条件 
    a[9]/a[10]==a[11])
     return true;
  return false;
}
void f(int k)
{
  if(k==13){
  if(check()){      //全排列列举 
    ans++;
  }
  }
  for(int i=k;i<13;i++){
  {int t=a[i];a[i]=a[k];a[k]=t;}
   if((k==2&&a[0]+a[1]!=a[2])||(k==5&&a[3]-a[4]!=a[5]))  //慢慢的去除不必要的条件 
      {int t=a[i];a[i]=a[k];a[k]=t;                
     continue;}                                    //直接进行返回 
    f(k+1);
    {int t=a[i];a[i]=a[k];a[k]=t;}  //这里是回溯 
  }
}
int main()
{
  f(0);
  cout<<ans;   //答案为64
  return 0;
}


总结:遇到除数要长个心眼,是要整除的,如果运算量太大的话,尽量设置一些条件来减少一些运算


相关文章
|
1月前
|
存储 算法 C++
【C++】——标准模板库STL作业(其一)
【C++】——标准模板库STL作业(其一)
85 0
【C++】——标准模板库STL作业(其一)
|
1月前
|
存储 算法 C++
【C++】——标准模板库STL作业(其三)
【C++】——标准模板库STL作业(其三)
72 0
【C++】——标准模板库STL作业(其三)
|
8月前
|
算法 测试技术 C++
C++二分算法习题:判断是否是完全平方数[容易]和排列箱子[容易]
C++二分算法习题:判断是否是完全平方数[容易]和排列箱子[容易]
|
1月前
|
C++
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
|
1月前
|
Serverless C++ 容器
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】
|
1月前
|
C++ 芯片
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】
|
1月前
|
算法 C++ 容器
【C++】标准模板库STL作业(其二)
【C++】标准模板库STL作业(其二)
78 0
【C++】标准模板库STL作业(其二)
|
1月前
|
C++ Go 自然语言处理
Golang每日一练(leetDay0047) 复制带随机指针链表、单词拆分I\II
Golang每日一练(leetDay0047) 复制带随机指针链表、单词拆分I\II
31 0
Golang每日一练(leetDay0047) 复制带随机指针链表、单词拆分I\II
|
1月前
|
Java Go C++
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
40 0
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
|
1月前
|
算法 C++ Java
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和
37 0
Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和