 Open in App
Not now

# Number of Hamiltonian cycle

• Difficulty Level : Medium
• Last Updated : 22 Jun, 2022

Given an undirected complete graph of N vertices where N > 2. The task is to find the number of different Hamiltonian cycle of the graph.
Complete Graph: A graph is said to be complete if each possible vertices is connected through an Edge.
Hamiltonian Cycle: It is a closed walk such that each vertex is visited at most once except the initial vertex. and it is not necessary to visit all the edges.
Formula: Examples:

```Input : N = 6
Output : Hamiltonian cycles = 60

Input : N = 4
Output : Hamiltonian cycles = 3```

Explanation:
Let us take the example of N = 4 complete undirected graph, The 3 different hamiltonian cycle is as shown below: Below is the implementation of the above approach:

## C++

 `// C++ program for implementation of the``// above program` `#include ``using` `namespace` `std;` `// Function that calculates``// number of Hamiltonian cycle``int` `Cycles(``int` `N)``{` `    ``int` `fact = 1, result = 0;` `    ``result = N - 1;` `    ``// Calculating factorial``    ``int` `i = result;``    ``while` `(i > 0) {``        ``fact = fact * i;``        ``i--;``    ``}` `    ``return` `fact / 2;``}` `// Driver code``int` `main()``{``    ``int` `N = 5;` `    ``int` `Number = Cycles(N);` `    ``cout << ``"Hamiltonian cycles = "` `<< Number;``    ``return` `0;``}`

## Java

 `// Java program for implementation``// of the above program``class` `GFG``{``    ` `// Function that calculates``// number of Hamiltonian cycle``static` `int` `Cycles(``int` `N)``{``    ``int` `fact = ``1``, result = ``0``;` `    ``result = N - ``1``;` `    ``// Calculating factorial``    ``int` `i = result;``    ``while` `(i > ``0``)``    ``{``        ``fact = fact * i;``        ``i--;``    ``}` `    ``return` `fact / ``2``;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``5``;` `    ``int` `Number = Cycles(N);` `    ``System.out.println(``"Hamiltonian cycles = "` `+``                                        ``Number);``}``}` `// This code is contributed``// by Code_Mech.`

## Python3

 `# Python3 program for implementation``# of the above program``import` `math as mt` `# Function that calculates``# number of Hamiltonian cycle``def` `Cycles(N):` `    ``fact ``=` `1` `    ``result ``=` `N ``-` `1` `    ``# Calculating factorial``    ``i ``=` `result``    ``while` `(i > ``0``):``        ``fact ``=` `fact ``*` `i``        ``i ``-``=` `1``    ` `    ``return` `fact ``/``/` `2` `# Driver code``N ``=` `5` `Number ``=` `Cycles(N)` `print``(``"Hamiltonian cycles = "``,``                       ``Number)` `# This code is contributed``# by Mohit Kumar`

## C#

 `// C# program for implementation of``// the above program``using` `System;` `class` `GFG``{` `// Function that calculates``// number of Hamiltonian cycle``static` `int` `Cycles(``int` `N)``{``    ``int` `fact = 1, result = 0;` `    ``result = N - 1;` `    ``// Calculating factorial``    ``int` `i = result;``    ``while` `(i > 0)``    ``{``        ``fact = fact * i;``        ``i--;``    ``}` `    ``return` `fact / 2;``}` `// Driver code``public` `static` `void` `Main()``{``    ``int` `N = 5;` `    ``int` `Number = Cycles(N);` `    ``Console.Write(``"Hamiltonian cycles = "` `+``                                   ``Number);``}``}` `// This code is contributed``// by Akanksha Rai`

## PHP

 ` 0)``    ``{``        ``\$fact` `= ``\$fact` `* ``\$i``;``        ``\$i``--;``    ``}` `    ``return` `floor``(``\$fact` `/ 2);``}` `// Driver code``\$N` `= 5;` `\$Number` `= Cycles(``\$N``);` `echo` `"Hamiltonian cycles = "``,``                     ``\$Number``;` `// This code is contributed by Ryuga``?>`

## Javascript

 ``

Output:

`Hamiltonian cycles = 12`

Time Complexity: O(n)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up