Description
A ring is composed of n (even number) circles as shown in diagram. Put natural numbers
into each circle separately, and the sum of numbers in two adjacent circles should be a prime.
Note: the number of first circle should always be 1.
Input
n (0 < n <= 16)
Output
The output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers must satisfy the above requirements.
You are to write a program that completes above process.
Sample Input
6 8
Sample Output
Case 1: 1 4 3 2 5 6 1 6 5 2 3 4 Case 2: 1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2
Miguel A. Revilla
1999-01-11
题意: 输入正整数n,把1,2,3,...,n组成一个环,使得相邻两个正数之和均为素数,输出时按从整数1开始逆时针排列,同一个环恰好输出一次。 思路: 用dfs进行回溯。 代码:#include<cstdio> #include<algorithm> using namespace std; int S[20]; int main() { int n,casex=1; long long ans,a; while(scanf("%d",&n)!=EOF) { ans=0; for(int i=1;i<=n;i++) scanf("%d",&S[i]); for(int i=1;i<=n;i++) { for(int j=i;j<=n;j++) { a=1; for( int k=i;k<=j;k++) { a*=S[k]; } ans=max(ans,a); } } printf("Case #%d: The maximum product is %lld.\n\n",casex,ans); casex++; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-02 01:07:27