This commit is contained in:
HuangHai
2025-08-30 18:35:01 +08:00
commit 1f397eca87
6258 changed files with 1487241 additions and 0 deletions

View File

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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

View 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>

View 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>

View 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>

View 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);
}

View 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);
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View File

@@ -0,0 +1 @@
https://www.cnblogs.com/moyujiang/p/11233080.html