当前位置: 代码迷 >> 综合 >> 2016蓝桥杯C++A组——寒假作业
  详细解决方案

2016蓝桥杯C++A组——寒假作业

热度:27   发布时间:2024-01-12 00:51:00.0

寒假作业题目链接

目录

  • 问题描述
  • 题目解析
  • C++代码
  • 正确答案

问题描述

【题目描述】
在这里插入图片描述
在这里插入图片描述
【输出】
在这里插入图片描述

题目解析

思路类比方格填数,全排列思想加check()检查。

C++代码

#include<bits/stdc++.h>
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])||(k==8&&a[6]*a[7]!=a[8])){
    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<<endl;return 0;
}

正确答案

在这里插入图片描述