当前位置: 首页 > news >正文

寒假作业(蓝桥杯2016年省赛C++A组第6题 )

 题目:

注:蓝桥杯2016年省赛C++A组第6题 

请填写表示方案数目的整数。

题解:

由题可知这是一道全排列问题,因此我们可以使用c++的next_permutation函数对于1-13的数字进行全排列即可,并每次排列判断是否满足题意。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

代码: 

方法1(c++):

#include<algorithm>
#include<iostream>
using namespace std;
int main()
{int ans = 0;int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};//由于本身就是一种排列方式,所以先判断,所以使用do-while循环do{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])ans++;}while(next_permutation(a,a+13));//开始为从小到大排列,因此此时可以输出全排列cout<<ans<<endl;return 0;
}

方法2(c++):

#include<iostream>
using namespace std;
int   a[14],vis[14],cnt = 0;
void dfs( int x  ){if( x == 12 ){ cnt++;  return ;}if( x == 2 ){a[2] = a[1] + a[0] ;if( a[2] <= 13 && a[2] >=1  && !vis[ a[2] ] ){vis[ a[2] ] = 1;dfs(  x + 1 );vis[ a[2] ] = 0;}else return ;  }else if( x == 5 ){a[5] = a[3] - a[4];if( a[5] <= 13 && a[5] >=1  && !vis[ a[5] ] ){vis[ a[5] ] = 1;dfs(  x + 1 );vis[ a[5] ] = 0;}else return ;  }   else if( x == 8 ){a[8] = a[6] * a[7];if( a[8] <= 13 && a[8] >=1  && !vis[ a[8] ] ){vis[ a[8] ] = 1;dfs(  x + 1 );vis[ a[8] ] = 0;}else return ;} else if( x == 11 ){if( a[9] % a[10]== 0 )a[11] = a[9] /a[10];else return ;if( a[11] <= 13 && a[11] >=1  && !vis[ a[11] ] ){vis[ a[11] ] = 1;dfs(  x + 1 );vis[ a[11] ] = 0;}else return ;}else {for( int i= 1;i<=13;i++){if( !vis[i] ){vis[i] = 1; a[x] = i;dfs( x + 1 );vis[i] = 0;  	   }}} 
}
int main(void){dfs( 0 );printf("%d\n",cnt);return 0;
}

方法3(python):

summary = [x for x in range(1,14)]
summit = 0
for item in summary:summary_1 = summary.copy()summary_1.remove(item)for item_1 in summary_1:summary_2 = summary_1.copy()summary_2.remove(item_1)for item_2 in summary_2:summary_3 = summary_2.copy()summary_3.remove(item_2)for item_3 in summary_3:summary_4 = summary_3.copy()summary_4.remove(item_3)for item_4 in summary_4:summary_5 = summary_4.copy()summary_5.remove(item_4)for item_5 in summary_5:summary_6 = summary_5.copy()summary_6.remove(item_5)for item_6 in summary_6:summary_7 = summary_6.copy()summary_7.remove(item_6)for item_7 in summary_7:summary_8 = summary_7.copy()summary_8.remove(item_7)a = item + item_1b = item_2 - item_3c = item_4 * item_5d = item_6 / item_7if a in summary_8 and b in summary_8 and c in summary_8 and d in summary_8:summit += 1
print(summit)
http://www.lryc.cn/news/107922.html

相关文章:

  • NUMA架构在kubernetes中的应用
  • Gogs Git windos服务搭建指南
  • leetcode 983. 最低票价
  • 七种遍历Map的方法
  • Android性能优化—内存优化
  • Python自动计算Excel数据指定范围内的区间最大值
  • FTP文件传输协议
  • 运维高级--tomcat和jpress
  • 【LeetCode】141. 环形链表 进阶题142. 环形链表 II
  • MySQL索引1——基本概念与索引结构(B树、R树、Hash等)
  • TikTok数据分析 | 用好超店有数,生意增长快人一步
  • 从零开始学Docker(三):DockerFile镜像定制
  • 【Linux】 UDP网络套接字编程
  • 《golang设计模式》第一部分·创建型模式-05-工厂方法模式(Factory Method)
  • Kubernetes 概述
  • Electron + Vue3 + Vite + TS 构建桌面应用
  • springboot访问请求404的原因
  • 网络安全零基础该如何自学?
  • Git(丢失stash数据恢复)
  • Maven依赖管理
  • 【电网技术复现】考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)
  • R语言中数据重塑(长宽表的转化)
  • C# Blazor 学习笔记(10):依赖注入
  • 接口请求(get、post、head等)详解
  • 【【萌新的STM32学习-4】】
  • C++ Primer Plus第五章 习题
  • 软考A计划-系统集成项目管理工程师-信息文档和配置管理-上
  • Vue 路由 路由守卫
  • 基于springboot的课程作业管理系统【附开题|ppt|万字文档(LW)和搭建文档】
  • 关于个人微信API接口的开发