这题做了很久 用的是递归的方法 递归大法好 

写起来思路比较清晰 但也比较麻烦 废话不多说 上代码:
#include<iostream>
#include<cstring>
#include<sstream>
using namespace std;
int x;
string f(int n)
{
	string str="";
	if(n==1)
	{
		stringstream ss;
		ss<<n;
		str="sin(";
		str+=ss.str(); 
		return str;
	}
	else
	{
		str+=f(n-1);
		if(n%2!=0) str+="+";
		if(n%2==0) str+="-";
		str+="sin(";
		stringstream ss;
		ss<<n;
		str+=ss.str(); 
		return str;
	}
}
string a(int n)
{
	string str1="";
	str1+=f(n);
	for(int i=0;i<n;i++)
	{
		str1+=")";
	 } 
	 return str1;
}
string s(int n)
{
	string str="";
	if(n==1)
	{
		str+=a(n);
		str+="+";
		stringstream ss;
		ss<<x;
		str+=ss.str();
		return str;
	}
	else
	{
		str+="(";
		str+=s(n-1);
		str+=")";
		if(n==x)
		{
		str+=a(x);
		str+="+";
		str+="1";
	    }
		else
		{
		  
		   	str+=a(n);
		   	stringstream ss2;
		   	str+="+";
		   ss2<<(x-n)+1;
		   str+=ss2.str(); 
		}
		return str;   
	}
}
int main()
{
	//freopen("data.in.txt","r",stdin);
	//freopen("data.out.txt","w",stdout);
  int n;
  cin>>n;
  	x=n;
    cout<<s(n);
  return 0;	
}


点赞(4)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 5 条评论

lazyCoder 5年前 回复TA
一个人写两份题解可还行
验题君 6年前 回复TA
递归大法6
象帝之先 7年前 回复TA
@象帝之先 懂了,3Q
wu 7年前 回复TA
@象帝之先 x就是为了保存n的值 作为一个全局变量
象帝之先 7年前 回复TA
始终没看明白,X的作用是什么?