1. 程式人生 > >排列、組合演算法 C語言

排列、組合演算法 C語言

組合
#include <stdio.h>
#define N 12
#define M 5


int a[M];


void print(){
    int i;
    for(i = 0; i < M; ++i) 
        printf(" %d ",a[i]);
    printf("\n");
}

void comb(int n, int m)
{
    if (m == 0) {
        print();
        return;
    } else {
        for (int i = n-1; i >= 0; --i)
        {
            a[m-1] = i+1;
            comb(i, m-1);
        }
    }
}

int main()
{
    comb(N,M);
    return 0;
}

排列

#include <stdio.h>
#include <stdlib.h>

int sum = 0;
int visited[14];
int a[13];
int A, b, c, d;


void dfs(int step)
{
	if (step == 13) {
		//必須整除,變成乘法判斷
		if (a[10] == a[11] * a[12]) sum++;
		return;
	}
	if (step == 10) {
		if (a[7] * a[8] != a[9]) return;
	}
	if (step == 7) {
		if (a[4] - a[5] != a[6]) return;
	}
	if (step == 4) {
		if (a[1] + a[2] != a[3]) return;
	}
	for (int i = 1; i <= 13; i++)
	{
		if (visited[i] == 0)
		{
			visited[i] = 1;
			a[step] = i;
			dfs(step + 1);
			visited[i] = 0;
		}
	}

}

int main()
{

	for (int i = 0; i<13; i++)
	{
		visited[i] = 0;
	}
	dfs(1);

	printf("%d\n", sum);
	printf("%d\t%d\t%d\t%d", A, b, c, d);
	getchar();
	return 0;
}

相關推薦

排列組合演算法 C語言

組合#include <stdio.h> #define N 12 #define M 5 int a[M]; void print(){ int i; for(i = 0; i < M; ++i) printf("

排列組合演算法C#語言實現

using System; namespace Util.Comp { public class CombinationPermutation { public static void Main() { //全排列使用方法

php演算法 階乘排列組合

<?php /** * 階乘 */ function factorial($n) { //array_product 計算並返回陣列的乘積 //range 建立一個包含指定範圍的元素的陣列 return array_product(range(1, $n)); } /**

基於C#的排列組合演算法

using System;using System.Collections.Generic; namespace Algorithms{    public class PermutationAndCombination<T>    {        /// &l

TCP UDP網絡編程作業代寫代寫C 語言 TCP程序 Network Programming using C

java upper single required mission GC recommend may could TCP 、UDP網絡編程作業代寫、代寫C 語言 TCP程序Network Programming using COverview? This homework

代寫COMP20005作業代做C/C++編程幫寫C語言作業代寫C/C++程序作業

mea utc requests action strength col assign ear remember The University of MelbourneSchool of Computing and Information SystemsCOMP20005

ht46ru232 串列埠接收傳送程式 C語言

#include "HT46RU232.h"#pragma vector Uart_ISR @0x10        //串列埠中斷入口申明void Uart_init();void Uart_send(unsigned char

代寫CO4215/CO7215/CO7515作業代做C#程式設計設計作業代寫MySQL留學生作業代做C#語言作業

代寫CO4215/CO7215/CO7515作業、代做C#程式設計設計作業、代寫MySQL留學生作業、代做C#語言作業Advanced Web TechnologiesCO4215/CO7215/CO7515Assignment 1University of Leicester 1 of 2Departmen

GSM A5/1演算法C語言程式碼實現和分析

介紹 全球超過200個國家和地區超過10億人正在使用GSM電話。對中國使用者來說,GSM就是移動和聯通的2g模式。 在1982年A5首次提出時,人們認為A5 / 1金鑰長度要128位,但最終確定的結果是64位金鑰(政府可以使用暴力破解算出)。很可能是政府的壓力迫使金鑰位數縮

排序演算法c語言描述---氣泡排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

排序演算法c語言描述---直接插入排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

排序演算法c語言描述---選擇排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

排序演算法c語言描述---希爾排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

排序演算法c語言描述---雙向氣泡排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

KMP演算法(C語言)

#include <stdio.h> #include <string.h> int KMP(char *t, char *p, int *next) { int a,i,j; a=0; i=0; j=0; while(i<strlen(t)

5 種排序演算法--C語言連結串列

原始碼地址 GitHub:https://github.com/GYT0313/C-DataStructure/blob/master/sortIn5.c 包括: 氣泡排序 快速排序 選擇排序 插入排序 希爾排序 執行: 注意:

SHA-1演算法C語言實現

> 程式碼轉載自:https://blog.csdn.net/testcs_dn/article/details/25771377?locationNum=13&fps=1 > 感謝博主分享 #include<stdio.h> void creat_w(uns

頁面置換演算法——最近最久未使用演算法(c語言實現)

作業系統實驗:用C語言程式設計實現最近最久未使用置換演算法(LRU) 最近最久未使用置換演算法(LRU),全稱Least Recently Used,是一種頁面置換演算法。 對於在記憶體中但又不用的資料塊(記憶體塊)叫做LRU,作業系統會根據哪些資料屬於LRU而將其移出記憶體而騰出空間來載入另外

建立雙向連結串列的演算法——C語言實現

建立雙向連結串列的演算法——C語言實現 雙向連結串列也叫雙鏈表,是連結串列的一種,它的每個節點包含兩個指標,分別指向直接後繼和直接前驅(頭節點的前驅指空,尾節點的後繼指空)。所以,從雙向連結串列中的任意一個非前驅非後繼節點開始,都能很方便地訪問它的前驅和後繼節點。 實際上如果熟練掌握了單向連

擴充套件歐幾里得演算法--C語言程式

前提 擴充套件歐幾里得演算法是在歐幾里得演算法(輾轉相除法)的前提下,對已知數求係數的一種演算法。擴充套件歐幾里得演算法的公式推導我就不廢話了,基本上就是第一次推導的係數等於第二次推導的係數之間的聯絡,很多文章都引用百度對擴充套件歐幾里得的定義,但是講的不是很