'commit'
This commit is contained in:
0
C++专题课程/全排列/.keep
Normal file
0
C++专题课程/全排列/.keep
Normal file
56
C++专题课程/全排列/AllPermutation.cpp
Normal file
56
C++专题课程/全排列/AllPermutation.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
|
||||
//ȫ<><C8AB><EFBFBD>д<EFBFBD><D0B4><EFBFBD>˵<EFBFBD><CBB5>
|
||||
|
||||
// https://www.jianshu.com/p/e0de4c9b73f2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
|
||||
|
||||
using namespace std;
|
||||
|
||||
//<2F><>[from, to]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>±<EFBFBD>Ϊfrom<6F><6D><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool IsSwap(char* from, char* to)
|
||||
{
|
||||
char* p;
|
||||
for(p = from; p < to; p++)
|
||||
{
|
||||
if(*p == *to)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void AllPermutation(char* perm, int from, int to)
|
||||
{
|
||||
if(from > to)
|
||||
return;
|
||||
|
||||
if(from == to) //<2F><>ӡ<EFBFBD><D3A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
{
|
||||
static int count = 1; //<2F>ֲ<EFBFBD><D6B2><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>ȫ<EFBFBD><C8AB><EFBFBD>еĸ<D0B5><C4B8><EFBFBD>
|
||||
cout << count++ << ":" << perm;
|
||||
cout << endl;
|
||||
}
|
||||
if(from < to) //<2F>õݹ<C3B5>ʵ<EFBFBD><CAB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
||||
{
|
||||
for(int j = from; j <= to; j++) //<2F><>j<EFBFBD><6A><EFBFBD>ַ<EFBFBD><D6B7>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵõ<DCB5><C3B5>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
if(IsSwap((perm + j), (perm + to)))
|
||||
{
|
||||
swap(perm[j], perm[from]);
|
||||
//cout<<0;
|
||||
AllPermutation(perm, from + 1, to);
|
||||
//cout<<1;
|
||||
swap(perm[j], perm[from]);
|
||||
//cout<<2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
char str[100];
|
||||
cin >> str;
|
||||
AllPermutation(str, 0, strlen(str) - 1);
|
||||
return 0;
|
||||
}
|
||||
14
C++专题课程/全排列/STL函数实现全排列.cpp
Normal file
14
C++专题课程/全排列/STL函数实现全排列.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
int main() {
|
||||
//注意:这个数组的数字要先排好顺序,由小到大,否则只输出比现在大的全排列!
|
||||
int num[5]= {3,1,2,4,5};
|
||||
//快速排序
|
||||
sort(num, num+5);
|
||||
//输出全排列
|
||||
do {
|
||||
cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<" "<<num[3]<<" "<<num[4]<<endl;
|
||||
} while(next_permutation(num,num+5));
|
||||
return 0;
|
||||
}
|
||||
|
||||
38
C++专题课程/全排列/ShjCppStudy/DFS实现全排列.cpp
Normal file
38
C++专题课程/全排列/ShjCppStudy/DFS实现全排列.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
int a[10], book[10], n;
|
||||
|
||||
//ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD><E3B7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dfs
|
||||
void dfs(int step)
|
||||
{
|
||||
int i;
|
||||
if (step == n + 1) //<2F><><EFBFBD><EFBFBD>վ<EFBFBD>ڵ<EFBFBD>n+1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾǰn<C7B0><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>к<EFBFBD>
|
||||
{
|
||||
for (i = 1; i <= n; i++) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>1-n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>˿<EFBFBD><CBBF>Ʊ<EFBFBD><C6B1>ţ<EFBFBD>
|
||||
{
|
||||
cout << a[i];
|
||||
}
|
||||
cout << endl;
|
||||
return; //<2F><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>dfs<66><73><EFBFBD><EFBFBD><EFBFBD>ĵط<C4B5><D8B7><EFBFBD>
|
||||
}
|
||||
//<2F><>վ<EFBFBD>ڵ<EFBFBD>step<65><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰӦ<C7B0>÷<EFBFBD>ʲô<CAB2><C3B4>
|
||||
//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD><33>4.....<2E>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (i = 1; i <= n; i++)
|
||||
{
|
||||
//<2F>ж<EFBFBD><D0B6>˿<EFBFBD><CBBF><EFBFBD>i<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (book[i] == 0)
|
||||
{
|
||||
a[step] = i; //<2F><><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD>˿<EFBFBD><CBBF>Ʒŵ<C6B7><C5B5><EFBFBD>step<65><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
book[i] = 1; //<2F><>book[i]<5D><><EFBFBD><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>i<EFBFBD><69><EFBFBD>˿<EFBFBD><CBBF>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
dfs(step + 1); //<2F><>step<65><70><EFBFBD><EFBFBD><EFBFBD>ӷźú<C5BA><C3BA><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
book[i] = 0; //ͬʱ<CDAC>ջظղų<D5B2><C5B3>Ե<EFBFBD><D4B5>˿<EFBFBD><CBBF><EFBFBD>
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
int main() {
|
||||
n=3;
|
||||
dfs(1);
|
||||
return 0;
|
||||
}
|
||||
20
C++专题课程/全排列/ShjCppStudy/STL实现全排列.cpp
Normal file
20
C++专题课程/全排列/ShjCppStudy/STL实现全排列.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
//C++STL<54><4C>ȫ<EFBFBD><C8AB><EFBFBD>к<EFBFBD><D0BA><EFBFBD>next_permutation<6F><6E>ʹ<EFBFBD><CAB9>
|
||||
// https://blog.csdn.net/ac_gibson/article/details/45308645
|
||||
int main()
|
||||
{
|
||||
int a[3] = { 3,1,2 };
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sort(a, a + 3);
|
||||
|
||||
//ȫ<><C8AB><EFBFBD><EFBFBD>
|
||||
do
|
||||
{
|
||||
cout << a[0] << a[1] << a[2] << endl;
|
||||
} while (next_permutation(a, a + 3));
|
||||
|
||||
return 0;
|
||||
}
|
||||
31
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.sln
Normal file
31
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.sln
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29306.81
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShjCppStudy", "ShjCppStudy.vcxproj", "{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Debug|x64.Build.0 = Debug|x64
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Debug|x86.Build.0 = Debug|Win32
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Release|x64.ActiveCfg = Release|x64
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Release|x64.Build.0 = Release|x64
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Release|x86.ActiveCfg = Release|Win32
|
||||
{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {9C8E3F9E-D637-4138-816C-B43DBD8F12D2}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
158
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.vcxproj
Normal file
158
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.vcxproj
Normal file
@@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DFS实现全排列.cpp" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{26EB7DDD-AA76-44F3-8780-67869B7CF8DD}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>ShjCppStudy</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
22
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.vcxproj.filters
Normal file
22
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.vcxproj.filters
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="源文件">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="头文件">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="资源文件">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DFS实现全排列.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
6
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.vcxproj.user
Normal file
6
C++专题课程/全排列/ShjCppStudy/ShjCppStudy.vcxproj.user
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ShowAllFiles>true</ShowAllFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
39
C++专题课程/全排列/ShjCppStudy/递归实现版本.cpp
Normal file
39
C++专题课程/全排列/ShjCppStudy/递归实现版本.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
//<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ԫ<EFBFBD><D4AA>
|
||||
void prt(int arr[], int end) {
|
||||
for (int i = 0; i <= end; ++i) {
|
||||
printf("%d", arr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
//ȫ<><C8AB><EFBFBD><EFBFBD> c++ʵ<><CAB5>
|
||||
//https://blog.csdn.net/u013309870/article/details/68941284
|
||||
//https://blog.csdn.net/jiaobuchong/article/details/85369970
|
||||
|
||||
//https://www.cnblogs.com/kiritozhj/p/10501470.html
|
||||
// https://blog.csdn.net/sofia_m/article/details/78865892
|
||||
|
||||
void perm(int arr[], int begin, int end) {
|
||||
//<2F>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>
|
||||
if (begin == end) {
|
||||
prt(arr, end);
|
||||
return;
|
||||
}
|
||||
//<2F><>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>еݹ<D0B5><DDB9>ĵݹ<C4B5><DDB9>忪<EFBFBD><E5BFAA>
|
||||
for (int i = begin; i <= end; ++i) {
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>ֵ
|
||||
swap(arr[begin], arr[i]);
|
||||
//<2F>ݹ<EFBFBD><DDB9><EFBFBD>
|
||||
perm(arr, begin + 1, end);
|
||||
//<2F>ָ<EFBFBD>ԭ״
|
||||
swap(arr[begin], arr[i]);
|
||||
}
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int arr[3] = { 3,1,2 };
|
||||
perm(arr, 0, 2);
|
||||
}
|
||||
37
C++专题课程/全排列/ShjCppStudy/非递归解法.cpp
Normal file
37
C++专题课程/全排列/ShjCppStudy/非递归解法.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
//<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ԫ<EFBFBD><D4AA>
|
||||
void prt(int arr[], int end) {
|
||||
for (int i = 0; i <= end; ++i) {
|
||||
printf("%d", arr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void perm(int arr[], int len) {
|
||||
if (len < 2) return;
|
||||
int i, j, temp;
|
||||
while(1) {
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
prt(arr, len - 1);
|
||||
i = j = len - 1;
|
||||
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ҵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ԫ<EFBFBD><D4AA>
|
||||
while (i > 0 && arr[i] < arr[i - 1]) --i;
|
||||
temp = i;
|
||||
if (i == 0) break;
|
||||
//<2F>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD>ҵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>arr[i-1]<5D><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
|
||||
while (temp + 1 < len && arr[temp + 1] > arr[i - 1]) ++temp;
|
||||
swap(arr[i - 1], arr[temp]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
reverse(arr + i, arr + len); //<2F><><EFBFBD><EFBFBD>
|
||||
};
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int arr[3] = { 3,1,2 };
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sort(arr, arr + 3);
|
||||
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
||||
perm(arr,3);
|
||||
}
|
||||
39
C++专题课程/全排列/dfs全排列.cpp
Normal file
39
C++专题课程/全排列/dfs全排列.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
#include<bits/stdc++.h>
|
||||
|
||||
//<2F>˴<EFBFBD><CBB4>ر<EFBFBD>˵<EFBFBD><CBB5><EFBFBD>£<EFBFBD>C<EFBFBD><43><EFBFBD>Ե<EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>и<EFBFBD>ֵǰĬ<C7B0><C4AC>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>book<6F><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ٴθ<D9B4><CEB8><EFBFBD>ֵ0
|
||||
int a[10], book[10], n;
|
||||
|
||||
//step<65><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵڼ<DAB5><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
|
||||
void dfs (int step) {
|
||||
int i;
|
||||
if (step == n+1) {
|
||||
//<2F><><EFBFBD><EFBFBD>վ<EFBFBD>ڵ<EFBFBD>n+1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD>ʾǰn<C7B0><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>ź<EFBFBD><C5BA>˿<EFBFBD><CBBF><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>1~n<>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>е<EFBFBD><D0B5>˿<EFBFBD><CBBF>Ʊ<EFBFBD><C6B1>ţ<EFBFBD>
|
||||
for (i = 1; i <= n; i++) {
|
||||
printf("%d", a[i]);
|
||||
}
|
||||
printf("\n");
|
||||
return;//<2F><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>dfs<66><73><EFBFBD><EFBFBD><EFBFBD>ĵط<C4B5><D8B7><EFBFBD>
|
||||
}
|
||||
//<2F><>ʱվ<CAB1>ڵ<EFBFBD>step<65><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>Ӧ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E>˳<EFBFBD><CBB3>һһ<D2BB><D2BB><EFBFBD><EFBFBD>
|
||||
for (i = 1; i <= n; i++) {
|
||||
//<2F>ж<EFBFBD><D0B6>˿<EFBFBD><CBBF><EFBFBD>i<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (book[i] == 0) {
|
||||
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>
|
||||
a[step] = i;//<2F><>i<EFBFBD><69><EFBFBD>˿<EFBFBD><CBBF>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>step<65>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
book[i] = 1;//<2F><>book[i]<5D><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾi<CABE><69><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//<2F><>step<65><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
|
||||
dfs(step+1);//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵݹ<C4B5><DDB9><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵģ<D6B5><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
|
||||
book[i] = 0;//<2F><><EFBFBD>Ƿdz<C7B7><C7B3><EFBFBD>Ҫ<EFBFBD><D2AA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫ<EFBFBD><D2AA><EFBFBD>ղų<D5B2><C5B3>Ե<EFBFBD><D4B5>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ջأ<D5BB><D8A3><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD>
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
int main(int argc, const char * argv[]) {
|
||||
scanf ("%d", &n);//<2F><><EFBFBD><EFBFBD>ʱҪע<D2AA><D7A2>nΪ1~9֮<39><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dfs(1);//<2F><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>1<EFBFBD><31>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
|
||||
return 0;
|
||||
}
|
||||
|
||||
58
C++专题课程/全排列/二进制思想求全排列.cpp
Normal file
58
C++专题课程/全排列/二进制思想求全排列.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
#include<iostream>
|
||||
#include<string.h>
|
||||
using namespace std;
|
||||
|
||||
void Combine(int arr[], int n, int m)
|
||||
{
|
||||
if(m > n)
|
||||
return;
|
||||
|
||||
int* pTable = new int[n]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>buf<75><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰm<C7B0><6D><EFBFBD><EFBFBD>1
|
||||
memset(pTable,0,sizeof(int)*n);
|
||||
for(int i = 0; i < m; ++i)
|
||||
pTable[i] = 1;
|
||||
|
||||
bool bFind = false;
|
||||
do
|
||||
{
|
||||
for (int i = 0; i < n; i++) //<2F><>ӡ<EFBFBD><D3A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
{
|
||||
if(pTable[i])
|
||||
cout << arr[i] << "\t";
|
||||
}
|
||||
cout << endl;
|
||||
|
||||
bFind = false;
|
||||
for(int i = 0; i < n-1; i++)
|
||||
{
|
||||
if(pTable[i]==1 && pTable[i+1]==0)
|
||||
{
|
||||
swap(pTable[i],pTable[i+1]); //<2F><><EFBFBD><EFBFBD>10Ϊ01
|
||||
bFind = true;
|
||||
|
||||
if(pTable[0] == 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλΪ0<CEAA><30><EFBFBD><EFBFBD>iλ<69><CEBB>֮ǰ<D6AE><C7B0>1<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>iλ<69><CEBB>֮ǰ<D6AE><C7B0>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
|
||||
{
|
||||
for (int k=0, j=0; k < i; k++) //O(n)<29><><EFBFBD>Ӷ<EFBFBD>ʹ1<CAB9><31>ǰ0<C7B0>ں<EFBFBD>
|
||||
{
|
||||
if(pTable[k])
|
||||
{
|
||||
swap(pTable[k],pTable[j]);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (bFind);
|
||||
delete [] pTable;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int arr[] = {1,2,3,4,5,6};
|
||||
Combine(arr,sizeof(arr)/sizeof(int),3);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
37
C++专题课程/全排列/全排列_1.cpp
Normal file
37
C++专题课程/全排列/全排列_1.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>n(1<=n<=9)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1~n<><6E>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
||||
#include<bits/stdc++.h>
|
||||
|
||||
int book[10];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
int array[10];//<2F><><EFBFBD><EFBFBD>
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
||||
int n;
|
||||
|
||||
//dfs<66><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void dfs(int step)
|
||||
{
|
||||
if(step==n+1){
|
||||
for(int i=1;i<=n;i++)
|
||||
printf("%d%c",array[i],i==n?'\n':' ');
|
||||
return;
|
||||
}
|
||||
for(int i=1;i<=n;i++){
|
||||
if(book[i]==0){
|
||||
array[step]=i;
|
||||
book[i]=1;
|
||||
dfs(step+1);
|
||||
book[i]=0;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
//<2F><>ʼ<EFBFBD><CABC>book<6F><6B><EFBFBD><EFBFBD>
|
||||
memset(book,0,sizeof(book));
|
||||
//<2F><><EFBFBD>ո<EFBFBD><D5B8><EFBFBD>
|
||||
scanf("%d",&n);
|
||||
dfs(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
38
C++专题课程/全排列/全排列_2.cpp
Normal file
38
C++专题课程/全排列/全排列_2.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include <iostream>
|
||||
#include<algorithm>
|
||||
#include<vector>
|
||||
using namespace std;
|
||||
//<2F>㷨<EFBFBD><E3B7A8>https://blog.csdn.net/wumuzi520/article/details/8087501#comments
|
||||
void Combination(int arr[], int nLen, int m, int out[], int outLen)
|
||||
{
|
||||
if(m == 0)
|
||||
{
|
||||
for (int j = 0; j < outLen; j++)
|
||||
cout << out[j] << "\t";
|
||||
cout << endl;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = nLen; i >= m; --i) //<2F>Ӻ<EFBFBD><D3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>һ<EFBFBD><D2BB>
|
||||
{
|
||||
out[m-1] = arr[i-1]; //ѡ<><D1A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
Combination(arr,i-1,m-1,out,outLen); // <20><>ǰi-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡm-1<><31><EFBFBD><EFBFBD><EFBFBD>еݹ<D0B5>
|
||||
}
|
||||
}
|
||||
void PrintCombination(int arr[], int nLen, int m)
|
||||
{
|
||||
if(m > nLen)
|
||||
return;
|
||||
|
||||
int* out = new int[m];
|
||||
Combination(arr,nLen,m,out,m);
|
||||
delete [] out;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int array[] = { 1,2,3,4,5,6};
|
||||
PrintCombination(array,6,3);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BIN
C++专题课程/全排列/全排列算法-递归&字典序实现.pptx
Normal file
BIN
C++专题课程/全排列/全排列算法-递归&字典序实现.pptx
Normal file
Binary file not shown.
41
C++专题课程/全排列/动态规划求全排列.cpp
Normal file
41
C++专题课程/全排列/动态规划求全排列.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
//<2F>Ӻ<EFBFBD><D3BA><EFBFBD>ǰѡȡ<D1A1><C8A1>ѡ<EFBFBD><D1A1>λ<EFBFBD><CEBB>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰi-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡm-1<><31><EFBFBD><EFBFBD>
|
||||
//<2F><> 1 2 3 4 5 <20><>ѡȡ 3 <20><>
|
||||
//1<><31>ѡȡ5<C8A1><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ4<C7B0><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ4<C7B0><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD>ݹ鼴<DDB9>ɡ<EFBFBD>
|
||||
//2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><35>ֱ<EFBFBD><D6B1>ѡ<EFBFBD><D1A1>4<EFBFBD><34><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ǰ3<C7B0><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD>ݹ鼴<DDB9>ɡ<EFBFBD>
|
||||
//3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>ֱ<EFBFBD><D6B1>ѡȡ3<C8A1><33><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ǰ2<C7B0><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD>պ<EFBFBD><D5BA><EFBFBD>һ<EFBFBD><D2BB>forѭ<72><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ5<CEAA><35><EFBFBD><EFBFBD>ֵΪm
|
||||
//<2F><><EFBFBD><EFBFBD><F2BFB4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ǰi-1<><31><EFBFBD><EFBFBD>ѡm-1<>ĵݹ顣
|
||||
//<2F><>̬<EFBFBD>滮˼<E6BBAE><CBBC>
|
||||
|
||||
void Combination(int arr[], int nLen, int m, int out[], int outLen) {
|
||||
if(m == 0) {
|
||||
for (int j = 0; j < outLen; j++) {
|
||||
cout << out[j] << "\t";
|
||||
}
|
||||
cout << endl;
|
||||
return;
|
||||
}
|
||||
for (int i = nLen; i >= m; --i) { //<2F>Ӻ<EFBFBD><D3BA><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>һ<EFBFBD><D2BB>
|
||||
out[m-1] = arr[i-1]; //ѡ<><D1A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
Combination(arr,i-1,m-1,out,outLen); // <20><>ǰi-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡȡm-1<><31><EFBFBD><EFBFBD><EFBFBD>еݹ<D0B5>
|
||||
}
|
||||
}
|
||||
|
||||
void PrintCombination(int arr[], int nLen, int m) {
|
||||
if(m > nLen)
|
||||
return;
|
||||
int* out = new int[m];
|
||||
Combination(arr,nLen,m,out,m);
|
||||
delete [] out;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int arr[5]= {1,2,3,4,5};
|
||||
int nLen=5;
|
||||
int m=3;
|
||||
PrintCombination(arr,nLen,m);
|
||||
return 0;
|
||||
}
|
||||
1
C++专题课程/全排列/康托展开公式/阅读材料.txt
Normal file
1
C++专题课程/全排列/康托展开公式/阅读材料.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://www.cnblogs.com/moyujiang/p/11233080.html
|
||||
Reference in New Issue
Block a user