蓝桥杯基础练习BASIC-21 sine之舞

C语言实现 IDE:dev c++

算法一

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char Oper[] = "+-";
void PrintAn(int ret, int N) {
	printf("sin(%d", ret);
	if (ret < N)
	{
		printf("%c", Oper[ret % 2]);
		PrintAn(ret + 1, N);
	}
	else if (ret == N)
	{
		int i;
		for (i = 0; i < N; ++i)
			printf(")");
	}
}
void PrintSn(int ret, int n) {
	if (ret == 1) {
		int i;
		for (i = 0; i < n - 1; ++i)
			printf("(");
	}
	PrintAn(1, ret);
	//printf("A%d", ret);
	printf("+%d", n - ret + 1);
	if (ret != n)
		printf(")");
	if (ret < n)
		PrintSn(ret + 1, n);
}
int main()
{
	int n;
	scanf("%d", &n);
	PrintSn(1, n);
	return 0;
}

算法二

#include <stdio.h>

void printA(int n, int k)
{
    if (n == k)
        printf("sin(%d)", n);
    else
    {
        printf("sin(%d", n);
        printf(n % 2 == 0 ? "+" : "-");
        printA(n + 1, k);
        printf(")");
    }
}

void printS(int n, int k)
{
    if (n == 1)
    {
        printA(1, n);
        printf("+%d", k - n);
    }
    else
    {
        printf("(");
        printS(n - 1, k);
        printf(")");
        printA(1, n);
        printf("+%d", k - n);
    }
}

int main()
{
    int N;
    scanf("%d", &N);
    printS(N, N + 1);
    printf("\n");
    return 0;
}

算法三

#include<stdio.h>
void An_Output(int n, int t)
{
	if(n == t)
	{
		printf("sin(%d)", t);
		return ;
	}
	char c;
	c = t % 2 == 1 ? '+' : '-';
	printf("sin(%d%c", t, c);
	An_Output(n, ++t);
	printf(")");
}
void Sn_Output(int n, int t)
{
	// Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
	if(n == t)
	{
		return ;
	}
	printf("(");
	Sn_Output(n, t+1);
	if(t != n - 1)
	{	
		printf(")");
	}
	An_Output(n - t, 1);
	printf("+%d", t+1);
}
int main()
{
	int n;
	scanf("%d", &n);
	Sn_Output(n, 1);
	if(n!=1)
		printf(")");
	An_Output(n, 1);
	printf("+1\n");
	return 0;
}

如果这段代码对您有帮助,希望您可以给猿猿一个赞,谢谢您嘞,code不易,且看且珍惜。

猜你喜欢

转载自blog.csdn.net/weixin_45437022/article/details/104833816