- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Count ways to divide circle using N non-intersecting chords in C++

Given an integer N as input for a number of chords in a circle with 2*N end points. The goal is to count the ways in which we can divide that circle using such chords so that no chord intersects with each other.

For N=3, points will be 6, 1 way of getting 3 chords is between 1−2, 3−4, 5−6

Other ways −

1−6, 2−5, 3−4 1−2, 3−6, 4−5 1−4, 2−3, 5−6 1−6, 2−3, 4−5

Total 5 ways.

**For Example**

## Input

N=4

## Output

Count of ways to divide circle using N non-intersecting chords are: 14

## Explanation

There will be a total 8 points between which we can draw chords. After drawing the first chord, the rest of the points will be divided into two sets. No chord can be drawn between points from set 1 and set 2 as they will intersect with the first chord.

## Input

N=6

## Output

Count of ways to divide circle using N non−intersecting chords are: 132

## Explanation

There will be a total 12 points between which we can draw chords. After drawing the first chord, the rest of the points will be divided into two sets. No chord can be drawn between points from set 1 and set 2 as they will intersect with the first chord.

**Approach used in the below program is as follows** −

In this approach we will count ways using previous counts. If we draw any chord between 2 points, the rest of the points will be divided into two sets set1 and set2, if we draw any chord between points in these two sets then they will intersect with the first chord.

Take an integer N as input.

Function divide_circle(int N) takes number and returns the count of ways to divide circle using N non−intersecting chords

Total number of points will be 2*N as total_points.

Take an array total_cuts[] storing the counts of ways.

For 0 or 2 points there will be only 1 way to initialize total_cuts[0], total_cuts[2] with 1.

For all other points starting from points=4, total ways will be ways with points i and rest n−i−1 points.

So take total_cuts[i] += (total_cuts[j] * total_cuts[i−2−j])

At the end we have total_cuts[ total_points ] as total number of ways.

Return total_cuts[ total_points ] as result at the end of the loop.

## Example

#include <bits/stdc++.h> using namespace std; int divide_circle(int N){ int total_points = 2 * N; int total_cuts[total_points + 1] = { 0 }; total_cuts[0] = 1; total_cuts[2] = 1; for (int i = 4; i <= total_points; i += 2){ for (int j = 0; j < i−1; j += 2){ total_cuts[i] += (total_cuts[j] * total_cuts[i−2−j]); } } return total_cuts[total_points]; } int main(){ int N = 3; cout<<"Count of ways to divide circle using N non−intersecting chords are:"<<divide_circle(N); return 0; }

## Output

If we run the above code it will generate the following output −

Count of ways to divide circle using N non-intersecting chords are: 5

- Related Questions & Answers
- Count digits in given number N which divide N in C++
- Count number of ways to divide a number in parts in C++
- Count ways to reach the n’th stair
- Count pieces of the circle after N cuts in C++
- Maximum product of two non-intersecting paths in a tree in C++
- Count square and non-square numbers before n in C++
- Program to count how many ways we can divide the tree into two trees in Python
- Program to count number of ways we can throw n dices in Python
- Count ways to express ‘n’ as sum of odd integers in C++
- All ways to divide array of strings into parts in JavaScript
- Count possible ways to construct buildings
- Program to count number of intervals which are intersecting at given point in Python
- Find Intersecting Intervals in Python
- Ways to sum to N using array elements with repetition allowed in C++
- Looping in JavaScript to count non-null and non-empty values