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开始).(请 ...
随机推荐
- php性能优化(一)压力測试工具篇
ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ...
- IntelliJ IDEA - 热部署插件JRebel ,对静态资源文件进行热部署?javascript、css、vm文件
IntelliJ IDEA - 热部署插件JRebel ,对静态资源文件进行热部署?javascript.css.vm文件https://blog.csdn.net/feng_pump/article ...
- JDK1.6新特性,网络增强(Networking features and enhancements)
参考: http://docs.oracle.com/javase/6/docs/technotes/guides/net/enhancements-6.0.html http://blog.csdn ...
- APACHE LOG4J™ 2
最近服务端开发需要用Log系统,于是研究了下APACHE下的Log框架. 目前日志系统,支持的语言有C++,PHP,.NET,JAVA.当然我是用Java服务端,选择用log4j吧.但突然发现log4 ...
- golang bufio、ioutil读文件的速度比较(性能测试)和影响因素分析
前言 golang读取文件的方式主要有4种: 使用File自带的Read方法 使用bufio库的Read方法 使用io/ioutil库的ReadAll() 使用io/ioutil库的ReadFile( ...
- Webservice超时问题
Winform客户端调用Webservice 120秒超时.对此问题,针对服务器与客户端分别作了超时设置为300S. 1. 服务器端设置超时 在 web.config 的 system.web 里添加 ...
- 关于chrome的开发调试方式
chrome://inspect/#devices 调试移动设备app chrome://version 查看chrome浏览器版本信息 chrome://components/ 查看组件信息 上面的 ...
- markModified声明要修改的数组字段
更新一个文档的字段的时候,如果该字段的类型是数组类型,则必须在更新保存前声明一下这个数组字段要被修改,否则这个数组字段的值不会被修改.如 article.markModified('categorys ...
- github pull request
https://stackoverflow.com/questions/14680711/how-to-do-a-github-pull-request https://help.github.com ...
- raft Paxos
CONSENSUS: BRIDGING THEORY AND PRACTICE https://ramcloud.stanford.edu/~ongaro/thesis.pdf https://web ...