C语言 · 排列数 · 排列式
012、021、102、120、201、210
输入一个数n
求0~9十个数的全排列中的第n个(第1个为0123456789)。
#include<stdio.h>
#include<string.h>
int n,sum=;
bool use[];//用来标记数字i是否被用了,即是否已被放在了排列中
int a[];
void dfs(int begin){
if(begin==){ //表示当前数组a中已有10个数字
sum++;
if(sum==n){
for(int i=; i<; i++)
printf("%d",a[i]);
}
}
for(int i=; i<=; i++){//枚举数字0到数字9
if(!use[i]){
use[i]=true;
a[begin]=i;//数组第一个元素为0
dfs(begin+);
use[i]=false;
}
}
}
int main(){
memset(use,false,sizeof(use));
scanf("%d",&n);
if(n==){
return ;
}
dfs();
return ;
}
输出所有这样的不同的式子(乘数交换被认为是相同的式子)
结果小的先输出;结果相同的,较小的乘数较小的先输出。
较小的乘数写在前面
7254 = 39 x 186
#include<stdio.h>
void meiju(){//解题函数
int count=,m,n,x;
int p,q;
for(int a=; a<; a++)
for(int b=; b<; b++)
for(int c=; c<; c++)
for(int d=; d<; d++)
for(int e=; e<; e++)
for(int f=; f<; f++)
for(int g=; g<; g++)
for(int i=; i<; i++)
for(int j=; j<; j++){
//保证1-9只出现一次
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=i&&a!=j&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=i&&b!=j&&c!=d&&c!=e&&c!=f&&c!=g&&c!=i&&c!=j&&d!=e&&d!=f&&d!=g&&d!=i&&d!=j&&e!=f&&e!=g&&e!=i&&e!=j&&f!=g&&f!=i&&f!=j&&g!=i&&g!=j&&i!=j){
m=a*+b*+c*+d;
n=e*+f;
x=g*+i*+j;
p=e;
q=f*+g*+i*+j;
if (m==n*x){
count++;
printf("%d=%dx%d\n",m,n,x);
}
if(m==p*q){
count++;
printf("%d=%dx%d\n",m,p,q);
}
}
}
printf("共有%d种。",count);
}
int main(){
meiju();
return ;
}
方法二:递归搜索
#include<stdio.h>
#include<string.h>
int sum=;
bool use[];
int a[];
void dfs(int begin){
if(begin==){ //表示当前数组a中已有9个数字
int num1=a[]*+a[]*+a[]*+a[];
int num2=a[]*+a[];
int num3=a[]*+a[]*+a[];
int num4=a[];
int num5=a[]*+a[]*+a[]*+a[];
if(num1==num2*num3){
printf("%d = %d x %d\n",num1,num2,num3);
}
if(num1==num4*num5){
printf("%d = %d x %d\n",num1,num4,num5);
}
return;
}
for(int i=; i<=; i++){//枚举数字1到数字9
if(!use[i]){
use[i]=true;
a[begin]=i;//数组第一个元素为0
dfs(begin+);
use[i]=false;
}
}
}
int main(){
memset(use,false,sizeof(use));
dfs();//对数组a来讲,表示从第 1个位置开始搜索
return ;
}
C语言 · 排列数 · 排列式的更多相关文章
- 排列数与For的关系
目录 什么是排列数 用现实模型表示 用Python编程表示 用数学符号表示 规律 规律1 规律2 如果m < n 会怎样? 排列数的应用场景 什么是排列数 排列指将一个集合里的每个元素不重复的排 ...
- C语言 · 排列数
算法提高 排列数 时间限制:1.0s 内存限制:256.0MB 问题描述 0.1.2三个数字的全排列有六种,按照字母序排列如下: 012.021.102.120.201.210 输入 ...
- 由abcd四个字符取5个作允许重复的排列,要求a出现次数不超过2次,但不能不出现;b不超过1个;c不超过3个;d出现的次数为偶数。求满足以上条件的排列数。
一.我的解法 由于没复习,我在想一般的方法,那就是d取0.2.4,然后分步计算,得到225这个错误答案. 二.指数型母函数 设满足以上条件取个排列的排列数为,的指数型母函数为 ...
- SCU 4424(求子集排列数)
A - A Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice ...
- 乘法原理,加法原理,多重集的排列数(多个系列操作穿插的排列数) 进阶指南 洛谷p4778
https://www.luogu.org/problemnew/solution/P4778 非常好的题目,囊括了乘法加法原理和多重集合排列,虽然最后使用一个结论解出来的.. 给定一个n的排列,用最 ...
- 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合
[题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...
- 46. Permutations 排列数
46. Permutations 题目 Given a collection of distinct numbers, return all possible permutations. For ex ...
- 蓝桥杯--算法提高 排列数 (简单dfs)
算法提高 排列数 时间限制:1.0s 内存限制:256.0MB 问题描述 0.1.2三个数字的全排列有六种,按照字母序排列如下: 012.021.102.120.201.210 输入 ...
- LeetCode.1175-质数排列(Prime Arrangements)
这是小川的第413次更新,第446篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第264题(顺位题号是1175).返回1到n的排列数,以使质数处于质数索引(索引从1开始).(请 ...
随机推荐
- MongoDB----逻辑与物理存储结构
基本的操作 一.常用的命令和基础知识 1.进入MongoDB shell 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ...
- Easyui 中 Tabsr的常用方法
注:index必须为变量 tab页从0开始 //新增一个tab页var index = 0;$('#tt').tabs('add',{ title: 'Tab'+index, content: '&l ...
- 【转】Swift 语言的设计错误
Swift 语言的设计错误 在『编程的智慧』一文中,我分析和肯定了 Swift 语言的 optional type 设计,但这并不等于 Swift 语言的整体设计是完美没有问题的.其实 Swift 1 ...
- 学习笔记之 curl 命令用法详解
[前言] 本文翻译和整理自 Linux-2.6.32 中和 curl 相关的 Manual Page 描述文档. 文档目的仅在提醒读者所遗忘的知识点,故在整理时削弱了阅读流畅性,适用于对 cu ...
- asp.net url址址中中文汉字参数传递乱码解决方法
中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...
- HTTP、 TCP、 IP、 Socket、 XMPP
网络自下而上分为: 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 HTTP:应用层协议,主要解决如何包装数据 XMPP:应用层协议 TCP:传输层协议,主要解决数据如何在网络中传输 IP ...
- PHP mysqli方式连接类
分享一个PHP以mysqli方式连接类完整代码实例,有关mysqli用法实例. 一个在PHP中以mysqli方式连接数据库的一个数据库类实例,该数据库类是从一个PHP的CMS中整理出来的,可实现PHP ...
- C++ Primer笔记 容器和算法(2)
erase 删除后 返回的是删除元素的后一个迭代器位置 int main() { //怎样正确的删除全部元素 循环 int a[]={1,2,3,4,5,6,7,8,9}; vector<in ...
- [Windows Azure] Windows Azure Identity
Windows Azure Identity Managing identity is just as important in the public cloud is it is on premis ...
- [Windows Azure] How to Deploy a Database to Windows Azure
How to Deploy a Database to Windows Azure There are several different ways you can move an on-premis ...