acm-挑战题之排列生成(代码片段)

小小小的程序媛 小小小的程序媛     2022-10-23     166

关键词:

题目描述:挑战题之排列生成

一自然数N,设N为3,则关于N的字典序排列为123,132,213,231,312,321。对于一个自然数N(1<= N <= 9 ) , 你要做的便是生成它的字典序排列。

输入

第一行为自然数N。

输出

输出对应于N的字典序排列,每个排列占一行。

样例输入

3

样例输出

123
132
213
231
312
321

思路:两种解法:1.按照位置放数字 2.按照数字放位置。
备注:使用数字和保存结果,直接输出每次结果即可,不然的话需要输出数组,增加时间消耗。。

// 挑战题之排列生成.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include<iostream>
#include <cstring>
#include <cstdio>
using namespace std;

const int MAX = 100;
int n, vis[MAX];

void DFS(int pos,int ans)

    if (pos == n)  printf("%d\n", ans); return; 

    for (int i = 1; i <= n; i++)
    
        if (!vis[i])
        
            vis[i] = 1;            
            DFS(pos + 1, 10 * ans + i);
            vis[i] = 0;
        
    


int main()

    while (cin >> n)
        DFS(0, 0);


    return 0;

 

hdu1521排列组合——指数型生成函数(代码片段)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1521标准的指数型生成函数;WA了好几遍,原来是多组数据啊囧;注意精度,直接强制转换(int)是舍去小数,会WA,+0.5再强制转换或输出%.0lf是四舍五入,能A。代码如下:#include<iostream>#inc... 查看详情

python面试题之生成器迭代器(代码片段)

面试题1  主要考察知识点:生成器从头到尾只能取一次值defdemo():foriinrange(4):yieldig=demo()g1=(iforiing)g2=(iforiing1)print(list(g1))print(list(g2))  *list数据类型强转也可以读取生成器的值,g1被list读取完后g2已经读取不到了面试题2 当... 查看详情

左神带你刷题之生成窗口最大值数值(代码片段)

题目描述:  有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次向右滑动一个位置。比如:给定数组【43543367】【435】43367    -----------窗口中最大值为5 4【354】3367   -------... 查看详情

序列相关的趣题之四(代码片段)

(8)给定一个英文单词,消除当中反复的字母,仅仅能删掉字母。不能交换字母顺序,最后原单词中每一个字母仅仅出现一次,求字典序最小的结果。这是toj一个题。百度面试也问过,原题见http://acm.tju.edu.cn/toj/showp3257.html此题... 查看详情

面试题之mysql(代码片段)

1、已知销售表(sell)如下,需要统计如下一张日报表日期青岛啤酒(金额)哈尔滨雪花啤酒(金额)南昌啤酒(金额)2019-03-274800400028002019-03-282000023002019-03-291200200015002、有一张表performance,数据如下idnamescore1张三672李四843王五7... 查看详情

链表12:链表中删除元素的8道题之三(代码片段)

我们继续看第三组关于结点删除的题:【5】LeetCode83存在一个按升序排列的链表,请你删除所有重复的元素,使每个元素只出现一次。【6】LeetCode82存在一个按升序排列的链表,请你删除链表中所有存在数字重复情... 查看详情

acm_逆序数(代码片段)

...多人都挂了线代,他决定写个程序帮挂科的同学。在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。可是冬瓜想的头... 查看详情

w3cshool--排列组合去重算法挑战(代码片段)

functionpermAlone(str)if(str.length==1)returnstr;vara=str.substr(0,1),one=[a],count=0,toggle=true;for(vari=0;i<str.length-1;i++)vartemp=str[i+1];//取出需要插入的字母one=cha(one,temp)//判断数组是否有连续重复的for(var 查看详情

xml生成自定义变体url(acme)(代码片段)

查看详情

xml生成自定义变体url(acme)(代码片段)

查看详情

python生成全排列(代码片段)

查看详情

2018-2019acm-icpc,asiashenyangregionalcontest(补题)(代码片段)

...bsp;B题-SequencesGenerator未补 C题-InsertionSort签到题之一,排列计数。题意:给你排列的长度$n$,要求你求出排列的个数,满足对其前k项排序后其最长上升子序列至少为$n-1$。解决:当最长上升子序列为$n$时答案明显时$k!$,为$n-1$... 查看详情

2018acm-icpc,asiashenyangregionalcontestcej(代码片段)

C.InsertionSort求有多少 1 到 n 的排列满足条件将前 k 个的数排列以后最长上升子序列长度为 n?1 以上队友推了式子试了下就过了1#include<bits/stdc++.h>2typedeflonglongll;3usingnamespacestd;45llans,n,k,p;67ll 查看详情

冰水挑战hdu-6495(代码片段)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6495题解:DP!!!dp[i][j]表示前i个挑战,接受了j个剩余的最大体力,最后输出体力大于0的j最大的即可#include<iostream>#include<vector>#include<algorithm>#include<cstdio>#in 查看详情

测试萌新必备算法题之:冒泡排序(代码片段)

冒泡排序应该是程序员入门必备的算法之一吧,我们来看看常规的冒泡排序算法;defbubble_sort_01(random_list):"""没有优化的常规冒泡排序"""list_len=len(random_list)#外层控制循环次数,内层控制索引forouter_idxinrange(list_len-1):forinner_idxinrange... 查看详情

javascript递归函数,用于生成字符串的排列(代码片段)

查看详情

递归函数生成全排列(代码片段)

  检查n个不同元素的所有排列方式来确定一个最佳的排序。比如a,b,c的排列方式有<<abc,acb,bac,bca,cab,cba>>这六种。 用c++非递归函数实现比较难,用递归实现还是ok的 其核心思想是:将每个元素放到n个元素组成... 查看详情

sql面试题之三(难度:简单|含答案)(代码片段)

Sql面试题之三(难度:简单|含答案)答案: 1、SELECTB.name,B.DepartT.ContentFROMB,TWHERE(T.Content=‘税法培训‘andT.workcode=b.workcode)2、  查看详情