仅供参考:
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>//数组
#include <set>//集合
#include <map>//映射
#include <utility>//包含map中的make_pair()函数
#include <algorithm>//包含sort排序
#include <stack>
using namespace std;
stack<int> s[3];
void move(int a,int b)
{
int temp=s[a].top();
s[a].pop();
s[b].push(temp);
cout<<a<<"->"<<b<<endl;
}
void han(int A,int B,int C,int n)
{
if(n==1)
{
move(A,C);
return;
}
han(A,C,B,n-1);
move(A,C);
han(B,A,C,n-1);
}
typedef long long ll;
ll f(int n)//n的阶乘
{
if(n<=1)
{
return 1;
}
return n*f(n-1);
}
int fib(int n)//斐波那契数列//1,1,2,3,5,8
{
if(n==1||n==2)
return 1;
return fib(n-1)+fib(n-2);
}
struct Student
{
string name;
int age;
};
int main()
{
/*******************VECTOR********************/
int n=10,m=10,i,j;
vector<vector<int> > arrs(n,vector<int>(m,0));//n行m列的二维数组
vector<vector<int> > arr;//二维数组 使用需初始化第一维度
for(i=0;i<n;i++)
{
vector<int> x(i+1,1);
arr.push_back(x);
}
for(i=0;i<n;i++)
{
for(j=0;j<arr[i].size();j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
vector<int> temp(n);//两种初始化 第二个参数默认为零
vector<int> temp2(n,5);
vector<Student> class1;//存放结构体
Student stu1,stu2;
stu1.name="jsdokl";
stu1.age=45;
stu2.name="sjdf";
stu2.age=34;
class1.push_back(stu1);
class1.push_back(stu1);
vector<int> vec;
vec.push_back(3);//尾部插入
vec.push_back(5);
vec.push_back(1);
vec[0]=4;//可直接手改
vec.pop_back();//尾部删除
for(i=0;i<vec.size();i++)//取长度
{
cout<<vec[i]<<endl;
}
vector<vector<int> > dd;
for(i=0;i<9;i++)
{
dd.push_back(vector<int>());//初始化
}
for(i=0;i<9;i++)//九九乘法表
{
for(j=0;j<=i;j++)
{
dd[i].push_back((i+1)*(j+1));
}
}
for(i=0;i<dd.size();i++)
{
for(j=0;j<dd[i].size();j++)
{
cout<<i+1<<"*"<<j+1<<"="<<dd[i][j]<<'\t';
}
cout<<endl;
}
class1.clear();//清空数据,内存还在
/*******************SET********************/
set<string> name;
name.insert("dshfl");//插入
name.insert("dklv");
name.insert("sovj");
name.erase("sovj");//删除
if(name.count("dklv"))//查找 返回1,0
{
cout<<"dklv is live!"<<endl;
}
for(set<string>::iterator it=name.begin();it!=name.end();it++)
{
cout<<*it<<endl;
}
name.clear();//清空set内存
cout<<name.size()<<endl;//获取元素个数
/*******************MAP***********************/
map<string,int> s;
s.insert(make_pair("niuge",3));//第一种插入
s["chenl"]=1;//第二种插入
s["dsjfkl"]=2;
s["sldkjf"]=2;
if(s.count("chenl"))//查找
{
cout<<"chenl is live!"<<endl;
s["chenl"]=3;
}
for(map<string,int>::iterator it=s.begin();it!=s.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}
s.clear();
/*******************SORT排序***********************/
int i;
int arr[]={9,4,2,7,2,7,2,5,3,6};
sort(arr,arr+10);//小到大
for(i=0;i<10;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
sort(arr,arr+10,greater<int>());//大到小
for(i=0;i<10;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
/*******************栈***********************/
stack<string> name;
name.push("slkf");//压入栈底
name.push("jlksdf");
name.push("skfdj");
name.push("s");
name.push("sdjl");
while(!name.empty())//判断是否为空 bool类型
{
cout<<name.size();
cout<<name.top()<<endl;//输出栈顶
name.pop();//栈顶下移
}
cout<<name.size();
/*******************递归***********************/
//递归问题解决重复子问题
//ll a=4038509223897348975;
//cout<<f(10)<<endl;
//cout<<fib(4)<<endl;
//printf("%I64d\n",a);//long long 输出
//printf("%lld\n",a);
//cout<<a<<endl;
/*汉诺塔问题*/
int n;
cin>>n;
for(int i=n;i>=1;i--)
{
s[0].push(i);
}
han(0,1,2,n);
while(!s[2].empty())
{
cout<<s[2].top()<<" ";
s[2].pop();
}
return 0;
}