转移代码
来源:互联网 发布:邬贺铨 大数据 编辑:程序博客网 时间:2024/06/11 21:46
//每天AC一道题,一年365道题,你就能成为一个编程高手
http://user.qzone.qq.com/547571157
刚接触计算机语言。把空间写的都转到这里吧。
从刚开始A题的所有代码都在这里了。
自己也懒的再一一分类了。还有没写完的代码。就这样吧。
写的还是比较少的。我会加油的!
/*#include<iostream>
#include<string>
#include<vector>
#include<cstdio>
using namespace std;
int main(){
int a,b;cin>>a>>b;
cout<<a+b<<endl;
return 0;
}*/
//南工No.79,导弹拦截
/*#include<iostream>
#include<vector>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
//void print(int a){cout<<a<<" ";}
int main()
{
int count;cin>>count;
while(count--)
{
int num;cin>>num;
vector<int>inter(num,1),height(num,0);
int i,j;
for(i=0;i<num;i++)
cin>>height[i];
for(i=1;i<num;i++)
for(j=0;j<i;j++)
{
if(height[i]<height[j])inter[i]=inter[i]>inter[j]+1?inter[i]:inter[j]+1;
}
// for_each(inter.begin(),inter.end(),print);
cout<<*max_element(inter.begin(),inter.end())<<endl;;
}
return 0;
}*/
//南工No.143,第几是谁
/*#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
int time;cin>>time;
while(time--)
{
unsigned int fac[] = {1,2,6,24,120,720,5040,40320,362880,3628800,39916800},rank;
cin>>rank;
char s[13]="abcdefghijkl";
int i,j,k;
rank--;//这里减一很重要
for(i=10;i>=0;i--)
{
int temp = rank/fac[i];
rank%=fac[i];
k=0;
for(j=0;j<12;j++)
{
if(s[j]!='0')k++;
if(k==temp+1)break;
}
cout<<s[j];
s[j]='0';
}
i=0;
while(1)
{
if(s[i]!='0'){cout<<s[i]<<endl;;break;}
else i++;
}
}
return 0;
}/*
/*
#include<stdio.h>
#include<memory.h>
int a[11] = { 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800 };
int b[12] = { 0 };
char c[12] = { 'a','b','c','d','e','f','g','h','i','j','k','l'};
int main()
{
long M, n;
int i,j,z,temp;
scanf("%ld", &M);
while (M--)
{
scanf("%ld", &n);
memset(b, 0, 48);
n--;
for (i = 10; i >= 0; i--)
{
temp = n / a[i];
n = n%a[i];
z = 0;
for (j = 0; j <12; j++)
{
if (b[j] == 0)
{
z++;
}
if (z == temp+1)
break;
}
printf("%c", c[j]);
b[j] = 1;
}
for (i = 0; i < 12; i++)
{
if (b[i] == 0)
{
printf("%c\n", c[i]);
}
}
}
return 0;
}
*/ //南工No.63,小猴子的下落
/*#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
while(1)
{
int Dep,Amo;
cin>>Dep>>Amo;
if(!(Dep&&Amo))break;
int t = pow(2,Dep)-1;
vector<int>tree(t,0);
int i,j,Loc;
for(i=0;i<Amo;i++)
{
Loc=1;
for(j=0;j<Dep-1;j++)
{
if(tree[Loc-1]){tree[Loc-1]=0;Loc=Loc*2+1;}
else {tree[Loc-1]=1;Loc*=2;}
}
}
cout<<Loc<<endl;
}
return 0;
}*/
//南工ACM,No.84.阶乘的零。
/*#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
void print(int a){cout<<a;}
int main()
{
int m;cin>>m;
while(m--)
{
int n,i;cin>>n;
vector<int>a(1,1);
int nRes=0;
for(i=2;i<=n;i++)
{
int jinweishu=0;
int j;
for(j=0;j<a.size();j++)
{
jinweishu+=a[j]*i;
a[j]=jinweishu%10;
jinweishu/=10;
}
while(jinweishu)
{
a.push_back(jinweishu%10);
jinweishu/=10;
}
while(!a[0]&&a.size()>=1)
{
nRes++;a.erase(a.begin());
}
}
//for_each(a.begin(),a.end(),print);cout<<endl;
cout<<nRes<<endl;
}
return 0;
}*/
/*#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
void print(int a){cout<<a;}
int main()
{
int m;cin>>m;
while(m--)
{
int nRes=0;
int n,i;cin>>n;
while(n)
{
nRes+=n/5;//因为每次只有(五和十)都会出现末尾是零,并且每次只会有一个。
n/=5;
}
cout<<nRes<<endl;
}
return 0;
}*/
//自选,大数除法.南工ACM,NO.70阶乘因式分解(二)范围增大版
/*#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int fre;cin>>fre;
while(fre--)
{
string s;cin>>s;
int m,i,sum=0;cin>>m;
vector<int>div,temp;
for(i=0;i<s.size();i++)
{
div.push_back(((int)s[i])-48);
}
while(div.size()!=0)
{
int t = 0;
for(i=0;i<div.size();i++)
{
t=t*10+div[i];
if(t<m)
{
if(i==0)continue;
else temp.push_back(0);
}
else
{
temp.push_back(t/m);
t%=m;
}
}
temp.swap(div);
temp.clear();
t=0;
for(i=0;i<div.size();i++)
{
t=t*10+div[i];
}
sum+=t;
}
cout<<sum<<endl;
}
return 0;
}*/
//南工ACM,NO.70阶乘因式分解(二)
/*#include<iostream>
using namespace std;
int main()
{
int s;cin>>s;
while(s--)
{
int n,m,t,sum=0;cin>>n>>m;t=m;
while(m<n)
{
sum+=n/m;
m*=t;
}
cout<<sum<<endl;
}
return 0;
}
*/
//南工ACM,NO.52无聊的小明
/*#include<iostream>
#include<cmath>
#include<vector>
int main()
{
using namespace std;
int N;cin>>N;
while(N--)
{
long long n,k;cin>>n>>k;
long long fir=n,loop=-1;
long long res,w=pow(10,k);
fir=n%w;
res=fir;
for(loop=1;loop<w;loop++)
{
res=res*n%w;
if(res==fir)break;
else if(loop==w-1){loop=-1;break;}
}
cout<<loop<<endl;
}
return 0;
}
*/
//南工ACM,NO.8
/*
#include<iostream>
#include<vector>
using namespace std;
struct lon{
int num;
int h;
int w;
}l;
void swap(lon &a,lon &b);
int main()
{
int n,m;
int i,j;
int a,b;
cin>>n;
while(n--)
{
vector<struct lon> v;
cin>>m;
for(i=0;i<m;i++)
{
cin>>l.num;
cin>>a>>b;
if(a<b)
{
l.h=b;
l.w=a;
}
else
{
l.h=a;
l.w=b;
}
v.push_back(l);
}
for(i=0;i<v.size();i++)
{
for(j=i+1;j<v.size();j++)
{
if(v[i].num>v[j].num)
{
swap(v[i],v[j]);
}
else if(v[i].num==v[j].num)
{
if(v[i].h>v[j].h)
swap(v[i],v[j]);
else if(v[i].h==v[j].h)
if(v[i].w>v[j].w)
swap(v[i],v[j]);
else if(v[i].w==v[j].w)
{
v.erase(v.begin()+j);
j--;
}
}
}
}
for(i=0;i<v.size();i++)cout<<v[i].num<<" "<<v[i].h<<" "<<v[i].w<<endl;
}
return 0;
}
void swap(lon &a,lon &b)
{
lon t;
t=a;a=b;b=t;
}*/
/*由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。*/
/*#include <iostream>
#include <cstring>
using namespace std;
int vis[10];
int bk[10];
int check(int x, int y)
{
do
{
if(vis[x % 10] == 0)
{
return 0;
}
vis[x % 10]--;
} while(x /= 10);
do
{
if(vis[y % 10] == 0)
{
return 0;
}
vis[y % 10]--;
}
while(y /= 10);
return 1;
}
int check4(int x) //确认用到哪四个数
{
do
{
if(vis[x % 10] != 0)
{
return 0;
}
vis[x % 10]++;
}
while(x /= 10);
return 1;
}
int main()
{
int cnt = 0;
for(int i = 1023; i <= 9876; i++)
{
memset(vis, 0, sizeof(vis));//初始化
if(!check4(i)) //确保结果是不同的四个数字
{
continue;
}
memcpy(bk, vis, sizeof(bk));//保存vis当前值
for(int j = 1; j <= 50; j++)
{
memcpy(vis, bk, sizeof(bk));//每个循环重置vis值
if(i % j != 0)
{
continue;
}
int k = i / j;
if(j > k) //避免重复,采用左小右大的原则
{
continue;
}
if(!check(j, k)) //检验式子用到的数字是否符合结果用到的数字
{
continue;
}
cout << j << " * " << k << " = " << i << endl;
cnt++;
}
}
cout << cnt << endl;
return 0;
}*/
//第二届第一题
/*
#include<iostream>
using namespace std;
int B,N;
int move(int arry[],int A,int sum);
int main()
{
int M;cin>>M;
while(M--)
{
int A;
cin>>N>>A>>B;
int arry[50],i,sum;
for(i=0;i<N;cin>>arry[i++]);
sum=move(arry,A,0);
cout<<sum<<endl;
}
return 0;
}
int move(int arry[],int A,int sum)
{
int temp=arry[A-1],a,b;
arry[A-1]=0;
if(A-temp==B||A+temp==B)return sum+1;
if(A-1-temp>=0)
{
if(arry[A-1-temp]!=0)
a=move(arry,A-temp,sum+1);
else a=-1;
}
else a=-1;
if(A-1+temp<N)
{
if(arry[A-1+temp]!=0)
b=move(arry,A+temp,sum+1);
}
else b=-1;
if(a>0)
{
if(b>0)return a>b?b:a;
else return a;
}
else return b;
}*/
//第三届第五题
/*#include<iostream>
int main()
{
using namespace std;
int vertical,lateral;cin>>vertical>>lateral;
int insect[20][20];
int i,j;
for(i=0;i<vertical;i++)
for(j=0;j<lateral;cin>>insect[i][j++]);
for(i=0;i<vertical;i++)
for(j=0;j<lateral;j++)
{
if(i==0&&j==0)continue;
if(i==0)insect[i][j]+=insect[i][j-1];
else if(j==0)insect[i][j]+=insect[i-1][j];
else if(insect[i-1][j]>insect[i][j-1])insect[i][j]+=insect[i-1][j];
else insect[i][j]+=insect[i][j-1];
}
cout<<insect[vertical-1][lateral-1]<<endl;
return 0;
}*/
//房间安排
/*
#include<iostream>
int main()
{
int N;std::cin>>N;
int sum=0;
int a[10000],b[10000],c[10000];
int i,j;
for(i=0;i<N;i++)std::cin>>a[i]>>b[i]>>c[i];
for(i=0;i<N-1;i++)//交换排序
{
int now=i;
for(j=i+1;j<N;j++)
{
if(b[now]>b[j])
now=j;
}
if(now!=i)
{
std::swap(a[i],a[now]);
std::swap(b[i],b[now]);
std::swap(c[i],c[now]);
}
}
sum+=a[0];
for(i=1;i<N;i++)
{
int t=a[i];
for(j=i-1;j>=0;j--)
{
if(b[j]+c[j]<=b[i]&&a[j]!=0)
{
if(a[j]>=t)
{a[j]-=t;break;}
else
{t-=a[j];a[j]=0;}
}
if(j==0)sum+=t;
}
}
std::cout<<sum<<std::endl;
return 0;
}*/
//阶乘之和
/*#include<iostream>
using namespace std;
int main()
{
int a[9]={1,2,6,24,120,720,5040,40320,362880};
int n;cin>>n;
while(n--)
{
int m;cin>>m;
int i=8;
for(;i>=0;i--)
{
if(a[i]<=m)
m-=a[i];
if(m==0){cout<<"Yes"<<endl;break;}
if(i==0)cout<<"No"<<endl;
}
}
return 0;
}*/
//懒省事的小明
/*#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
double n;cin>>n;
while(n--)
{
double kind;cin>>kind;
double i,t;
double sum=0;
vector<double>fruit;
for(i=0;i<kind;i++){cin>>t;fruit.push_back(t);}
for(i=0;i<kind-1;i++)
{
sort(fruit.begin(),fruit.end());
fruit[1]+=fruit[0];
sum+=fruit[1];
fruit.erase(fruit.begin());
}
cout<<sum<<endl;
}
return 0;
}*/
/*#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void half_insert_sort(vector<int>&fruit,int n);
int main()
{
int n;cin>>n;
while(n--)
{
int kind;cin>>kind;
int i,t;
double sum=0;
vector<int>fruit;
vector<int>Temp;
for(i=0;i<kind;i++){cin>>t;fruit.push_back(t);}
sort(fruit.begin(),fruit.end());
for(i=0;i<kind-2;i++)
{
int temp=fruit[1]+fruit[0];
Temp.push_back(temp);
fruit.erase(fruit.begin());
fruit.erase(fruit.begin());
half_insert_sort(fruit,temp);
}
for(i=0;i<Temp.size();sum+=Temp[i++]);
sum+=fruit[1]+fruit[0];
cout<<sum<<endl;
}
return 0;
}
void half_insert_sort(vector<int>&fruit,int n)
{
int base=0,top=fruit.size()-1;
int mid=(base+top)/2;
while(1)
if(fruit[mid]>n)
{
if(top==base)
{fruit.insert(fruit.begin()+mid,n);return;}
top=mid-1;
}
else if(fruit[mid]<n)
{
if(top==base)
{fruit.insert(fruit.begin()+mid+1,n);return;}
base=mid+1;
}
else {fruit.insert(fruit.begin()+mid,n);return;}
}*/
/*#include<set>
#include<cstdio>
int main()
{
int num;
scanf("%d",&num);
while(num--)
{
int i,kind;
double sum=0;
scanf("%d",&kind);
std::set<int>fruit;
std::set<int>::iterator add;
for(i=0;i<kind;++i)
{
int temp;
scanf("%d",&temp);
fruit.insert(temp);
}
for(i=0;i<kind-1;i++)
{
int a,b;
add=fruit.begin();
a=*add++;
b=*add;
sum+=a+b;
fruit.erase(fruit.begin());
fruit.erase(fruit.begin());
fruit.insert(a+b);
}
printf("%1.f\n",sum);
}
return 0;
}*/
//我排第几个
/*#include<iostream>
#include<string>
using namespace std;
void math(char s,double n,double a[],double &sum);
double chen(double n);
double main()
{
double n;cin>>n;
while(n--)
{
string s;cin>>s;
double sum=1,i,a[12]={1,1,1,1,1,1,1,1,1,1,1,1};
for(i=0;i<s.size();i++)
math(s.at(i),11-i,a,sum);
cout<<sum<<endl;}
return 0;
}
void math(char s,double n,double a[],double &sum)
{
double b=s-97;
double i,sum_=0;
for(i=0;i<b;sum_+=a[i++]);
a[b]=0;
sum+=sum_*chen(n);
}
double chen(double n)
{
double sum=1,i;
for(i=2;i<=n;sum*=i++);
return sum;
}*/
//三点顺序
/*#include<iostream>
using namespace std;
double main()
{
while(1){
double x1,y1,x2,y2,x3,y3;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
if(x1==0&&x2==0&&x3==0)break;
//斜率k=(y2-y1)/(x2-x1),代入点斜式,得y=k*(x-x1)+y1 ==>> y-kx=y1-kx1
if(x1!=x2)
{
double k=(y2*1.0-y1*1.0)/(x2*1.0-x1*1.0);
double a=y1*1.0-k*x1;
if(x2>x1)
{
if((y3*1.0-k*x3)<a){cout<<1<<endl;continue;}
else {cout<<0<<endl;continue;}
}
else if(x2<x1)
{
if((y3*1.0-k*x3)>a){cout<<1<<endl;continue;}
else {cout<<0<<endl;continue;}
}
}
else
{
if(y2>y1)
{
if(x3<x1){cout<<0<<endl;continue;}
else{cout<<1<<endl;continue;}
}
else
{
if(x3>x1){cout<<0<<endl;continue;}
else{cout<<1<<endl;continue;}
}
}
}
return 0;
}
*/
//计算题Kia's Calculation
/*#include<iostream>
#include<vector>
using namespace std;
double main()
{
double n;cin>>n;double N=1;
while(n--)
{
double a,b;cin>>a>>b;
vector<double>c[2];
if(a==0)c[0].push_back(0);
else while(a)
{
c[0].push_back(a%10);a/=10;
}
a=c[0].size();
if(b==0)c[1].push_back(0);
else while(b)
{
c[1].push_back(b%10);b/=10;
}
double i,j,k,max=0;k=a;
while(k--)
{
double max_[3]={-1};
for(i=a-1;i>=0;i--)
{
if(c[0][i]==-1||(k==a-1&&c[0][i]==0&&a!=1))continue;
for(j=a-1;j>=0;j--)
{
if(c[1][j]==-1||(k==a-1&&c[1][j]==0&&a!=1))continue;
if(max_[0]<(c[0][i]+c[1][j])%10){max_[0]=(c[0][i]+c[1][j])%10;max_[1]=i;max_[2]=j;}
}
}
c[0][max_[1]]=-1;c[1][max_[2]]=-1;
if(k==a-1)max=max_[0];
else max=max*10+max_[0];
}
cout<<"Case #"<<N++<<": "<<max<<endl;
}
return 0;
}*/
//大数斐波那契
/*描述
数列A满足An = An-1 + An-2 + An-3, n >= 3
编写程序,给定A0, A1 和 A2, 计算A99
输入
输入包含多行数据
每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000)
数据以EOF结束
输出
对于输入的每一行输出A99的值
样例输入
1 1 1样例输出
69087442470169316923566147
*//*
#include<iostream>
#include<sstream>
#include<string>
#include <stdio.h>
using namespace std;
double a[3];
double main()
{while(scanf("%d %d %d",&a[0],&a[1],&a[2])!=EOF)
{
string A[100];
double i;
for(i=0;i<3;i++)
{
stringstream temp;
string temp1;
temp<<a[i];
temp>>temp1;
A[i]=temp1;
}
for(i=0;i<3;i++)
{
double j;
for(j=0;j<A[i].size()/2;j++)
swap(A[i].at(j),A[i].at(A[i].size()-j-1));
}
for(i=3;i<100;i++)
{
double jin=0,T=0;//记录进位的数,和当前位数
while(1)
{
double t=0;
t+=jin;
if(A[i-1].size()>T)
t+=(double)(A[i-1].at(T)-48);
if(A[i-2].size()>T)
t+=(double)(A[i-2].at(T)-48);
if(A[i-3].size()>T)
t+=(double)(A[i-3].at(T)-48);
stringstream temp;//将double转换成为string
string temp1;//
temp<<t%10;//
temp>>temp1;//
A[i]=A[i]+temp1;//把前三项当前位数的数赋给下一个地方;
jin=t/10; //获得当前位数的进位数传递给下一位数上
T++;
if(T>=A[i-1].size()&&T>=A[i-2].size()&&T>=A[i-3].size())
{
if(jin!=0)
{
stringstream temp;
string temp1;
temp<<jin;
temp>>temp1;
A[i]=A[i]+temp1;
}
break;
}
}
}
for(i=A[99].size()-1;i>=0;cout<<A[99].at(i--));cout<<endl;
}
return 0;
}*/
//乘积最大问题
/*#include<iostream>
#include<vector>
using namespace std;
void paixu(vector<double>&zf,double t);
double main()
{
double n,sum=1;cin>>n;
vector<double>zf[2];
for(double i=0;i<n;i++)
{
double t;cin>>t;
if(t>0)paixu(zf[0],t);
else paixu(zf[1],t);
}
double m;cin>>m;double z=0,f=0;
if(zf[0].size()>=m)
{
z=m;f=0;
while(1)
{
if(zf[1].size()>=2&&z>=2)
{
double p=zf[1].size();
if(zf[1][p-1]*zf[1][p-2]>zf[0][m-1]*zf[0][m-2])
{
zf[0].push_back(zf[1][p-1]);
zf[0].push_back(zf[1][p-2]);
zf[1].erase(zf[1].begin()+p-1);
zf[1].erase(zf[1].begin()+p-2);
z-=2;f+=2;
}
else break;
}
else break;
}
}
else if((m-zf[0].size())%2==0)
{
z=zf[0].size();f=m-zf[0].size();
for(double i=0;i<f;i++)
{
zf[0].push_back(*(zf[1].end()-1));
zf[1].erase(zf[1].end()-1);
}
while(1)
{
if(zf[1].size()>=2&&z>=2)
{
double p=zf[1].size();
if(zf[1][p-1]*zf[1][p-2]>zf[0][m-1]*zf[0][m-2])
{
zf[0].push_back(zf[1][p-1]);
zf[0].push_back(zf[1][p-2]);
zf[1].erase(zf[1].begin()+p-1);
zf[1].erase(zf[1].begin()+p-2);
z-=2;f+=2;
}
else break;
}
else break;
}
}
else
{
z=zf[0].size();f=m-zf[0].size();
if(zf[1].size()>f&&z>0)
{
z--;f++;
for(double i=0;i<f;i++)
{
zf[0].push_back(*(zf[1].end()-1));
zf[1].erase(zf[1].end()-1);
}
while(1)
{
if(zf[1].size()>=2&&z>=2)
{
double p=zf[1].size();
if(zf[1][p-1]*zf[1][p-2]>zf[0][m-1]*zf[0][m-2])
{
zf[0].push_back(zf[1][p-1]);
zf[0].push_back(zf[1][p-2]);
zf[1].erase(zf[1].begin()+p-1);
zf[1].erase(zf[1].begin()+p-2);
z-=2;f+=2;
}
else break;
}
else break;
}
}
else
{
for(double i=0;i<f;i++)
{
zf[0].push_back(zf[1][i]);
}
}
}
for(i=0;i<z;i++)
{sum*=zf[0][i];cout<<zf[0][i]<<"*";}
double k=zf[0].size()-1;
for(i=0;i<f;i++)
{
sum*=zf[0][k--];
if(i==f-1)cout<<'('<<zf[0][k+1]<<")=";
else cout<<'('<<zf[0][k+1]<<")*";
}
cout<<sum<<endl;
return 0;
}
void paixu(vector<double>&zf,double t)
{
double n=zf.size();
if(n==0){zf.push_back(t);return;}
for(double i=n-1;i>=0;i--)
{
if(zf[i]>t)
{
zf.insert(zf.begin()+i+1,t);
return;
}
else if(i==0)
zf.insert(zf.begin(),t);
}
}
*/
//历届试题 分糖果
/*#include<iostream>
using namespace std;
double main()
{
double n;cin>>n;
double i,k=1,sum=0;
double a[101];
for(i=0;i<n;i++)
{
cin>>a[i];
}
while(k)
{
for(i=0;i<n-1;i++)
if(a[i]!=a[i+1])break;
else if(i==n-2)k=0;
if(k)
{
double x,y;
a[n-1]/=2;y=a[n-1];
for(i=n-2;i>=0;i--)
{
a[i]/=2;x=a[i];
a[i]+=y;
y=x;
}
a[n-1]+=y;
for(i=0;i<n;i++)
if(a[i]%2){a[i]++;sum++;}
}
}
cout<<sum<<endl;
return 0;
}*/
//历届试题 兰顿蚂蚁
/*#include<iostream>
using namespace std;
double main()
{
double a[101][101];
double n,m;
cin>>n>>m;
double i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cin>>a[i][j];
}
double x,y,k;char s;cin>>x>>y>>s>>k;
while(k--)
{
switch(s)
{
case 'U':
{
if(a[x][y])
{
a[x][y]=0;
s='R';
y++;
}
else
{
a[x][y]=1;
s='L';
y--;
}
}break;
case 'D':
{
if(a[x][y])
{
a[x][y]=0;
s='L';
y--;
}
else
{
a[x][y]=1;
s='R';
y++;
}
}break;
case 'L':
{
if(a[x][y])
{
a[x][y]=0;
s='U';
x--;
}
else
{
a[x][y]=1;
s='D';
x++;
}
}break;
case 'R':
{
if(a[x][y])
{
a[x][y]=0;
s='D';
x++;
}
else
{
a[x][y]=1;
s='U';
x--;
}break;
}
}
}
cout<<x<<" "<<y<<endl;
return 0;
}
*/ //入门训练 Fibonacci数列
/*#include<iostream>
using namespace std;
double main()
{
double n;cin>>n;
double i,a=1,b=1,c=1;
for(i=3;i<=n;i++)
{
c=(a+b)%10007;
a=b;b=c;
}
cout<<c<<endl;
return 0;
}
*/ //孪生素数问题。
/*
#include<iostream>
#include<cmath>
using namespace std;
double Ispri(double a);
double main()
{
double N,i;cin>>N;
char a[1000000]={'0'};
for(i=3;i<999998;++i)
if(Ispri(i)&&Ispri(i+2))
a[i]='1';
while(N--)
{
double sum=0,j;
double m;cin>>m;
for(i=3;i<m-1;i++)
if(a[i]=='1')sum++;
if(m>2)++sum;
cout<<sum<<endl;
}
return 0;
}
double Ispri(double a)
{
double i,k=sqrt(a)+1;
for(i=2;i<k;++i)
if(a%i==0)return 0;
return 1;
}
*/
//最长公共子序列(不连续)
/*#include"stdio.h"
#include"iostream"
#include"string.h"
#define max(a,b) a>b?a:b;
using namespace std;
double dp[1100][1100];
double main()
{
double a;cin>>a;
while(a--)
{
char b[1100],d[1100];
cin>>b>>d;
double c=strlen(b);
double f=strlen(d);
double j,k;
for(j=0;j<c;j++)
for(k=0;k<f;k++)
{
if(b[j]==d[k])
dp[j+1][k+1]=dp[j][k]+1;
else
dp[j+1][k+1]=max(dp[j+1][k],dp[j][k+1]);
}
cout<<dp[c][f]<<endl;
}
return 0;
}*/
/*#include<stdio.h>
#include<string.h>
#define max(a,b)(a>b?a:b)
double len[1010][1010];//表示序列a[i-1](从头到a[i-1])和b[j-1](从头到b[j-1])所有的最长公共子序列
double main()
{
double n,i,j,l1,l2;
char a[1010],b[1010];
scanf("%d",&n);
getchar();
while(n--)
{
gets(a);
gets(b);
l1=strlen(a);
l2=strlen(b);
for(i=0;i<=l1;i++)
{
len[i][0]=0;
}
for(j=0;j<=l2;j++)
{
len[0][j]=0;
}
for(i=1;i<=l1;i++)
{
for(j=1;j<=l2;j++)
{
if(a[i-1]==b[j-1])//字符串就是坑,这里要减一 。因为字符串里面第i个字符的下标是i-1
{
len[i][j]=len[i-1][j-1]+1;
}
else
{
len[i][j]=max(len[i-1][j],len[i][j-1]);
}
}
}
prdoublef("%d\n",len[l1][l2]);
}
return 0;
}
*/
/*#include<iostream>
#include<string>
#include<vector>
using namespace std;
double main()
{
double n;cin>>n;
while(n--)
{
vector<double>m;
vector<double>M;
double i,j,q,p;
string s,ss;
cin>>s>>ss;
q=s.size();
p=ss.size();
for(i=0;i<p;i++)
{
if(ss.at(i)==s.at(0))
{
for(j=i;j<p;j++)
m.push_back(1);
break;
}
else m.push_back(0);
}
for(i=1;i<q;i++)
{
if(ss.at(0)==s.at(i)||m[0]==1)
M.push_back(1);
else M.push_back(0);
for(j=1;j<p;j++)
{
if(ss.at(j)==s.at(i))
M.push_back(m[j-1]+1);
else M.push_back(m[j]>M[j-1]?m[j]:M[j-1]);
}
m.swap(M);
M.clear();
}
cout<<m[p-1]<<endl;
}
return 0;
}*/
//素数求和
/*
#include<iostream>
#include<cmath>
using namespace std;
double su(double a)
{
double i;
if(a==1)return 0;
for(i=2;i<sqrt(a+1);i++)
if(a%i==0)return 0;
return 1;
}
double main()
{
double n;cin>>n;
while(n--)
{
double m;cin>>m;
double a,i,sum=0;;
for(i=0;i<m;i++)
{
cin>>a;
if(su(a))sum+=a;
}
cout<<sum<<endl;
}
return 0;
}*/
//大数阶乘
/*
#include<iostream>
#include<vector>
using namespace std;
double main()
{
double n,i;cin>>n;
vector<double>a(1,1);
for(i=2;i<=n;i++)
{
double jinweishu=0;
double j;
for(j=0;j<a.size();j++)
{
jinweishu+=a[j]*i;
a[j]=jinweishu%10;
jinweishu/=10;
}
while(jinweishu)
{
a.push_back(jinweishu%10);
jinweishu/=10;
}
}
for(i=a.size()-1;i>=0;i--)
cout<<a[i];
cout<<endl;
return 0;
}*/
/*
#include<iostream>
#include<vector>
using namespace std;
double main(){
double N;cin>>N;//需要转换的进制数
double x;cin>>x;//需要转换的数
vector<char>y;//存放转换后的数
char s='A';
double z;
double i=0;
while(1){
z=x%N;
if(z>=10)y.push_back(s+z-10);
else y.push_back(48+z);
x=x/N;
++i;
if(x==0)break;
}
for(i=y.size()-1;i>=0;i--)
cout<<y[i];
cout<<endl;
return 0;
}*/
//笨小熊
/*#include<iostream>
#include<string>
using namespace std;
double su(double a)
{
double i;
if(a==2)return 1;
for(i=2;i<a;i++)
if(a%i==0)return 0;
else if(i==a-1)return 1;
return 0;
}
class xianxing
{
public:
double push(char s);
xianxing():top(0){double i;for(i=0;i<100;i++)a[i]=0;}
void minn(double &min);
void maxx(double &max);
private:
double top;
double a[100];
char b[26];
};
void xianxing::maxx(double &max)
{
double i;
for(i=0;i<top;i++)
if(a[i]>max)max=a[i];
}
void xianxing::minn(double &min)
{
double i;
for(i=0;i<top;i++)
if(a[i]<min)min=a[i];
}
double xianxing::push(char s)
{
if(top==0)
{
a[top]++;b[top++]=s;
return 1;
}
else
{
double i;
for(i=0;i<top;i++)
{
if(b[i]==s){a[i]++;return a[i];}
else if(i==top-1)
{
a[top]=1;
b[top++]=s;
return 1;
}
}
}
}
double main()
{
double n;cin>>n;
while(n--)
{
string s;cin>>s;
double max=0,min=100,i;
xianxing ss;
for(i=0;i<s.size();i++)
{
double k;
k=ss.push(s.at(i));
if(k>max)max=k;
}
ss.minn(min);
ss.maxx(max);
double q=max-min;
if(su(max-min))cout<<"Lucky Word"<<endl<<q<<endl;
else cout<<"No Answer"<<endl<<0<<endl;
}
return 0;
}*/
//AD转换。
/*
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
void AD(string s);
void DA(string s);
double main()
{
double N;cin>>N;
while(N--)
{
string s;cin>>s;
if(s.at(0)>='0'&&s.at(0)<='9')
AD(s);
else DA(s);
}
return 0;
}
void AD(string s)
{
double a=0;
for(double i=0;i<s.size();i++)
{
a+=(s.at(i)-48);
if(i!=s.size()-1)a*=10;
}
while(1)
{
double b=a/26;
if(!b){cout<<(char)(a+64)<<endl;break;}
else {cout<<(char)(b+64);a%=26;}
}
}
void DA(string s)
{
double sum=0;
for(double i=0;i<s.size();i++)
sum+=((double)(s[i]-64))*pow(26,s.size()-i-1);
cout<<sum<<endl;
}*/
//问题描述
/*
对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?
输入格式
第一行一个数表示数据组数
每组输入数据共2行:
第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15,
第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。
输出格式
每组数据输出1行,为最大的乘积。*/
/*
#include<iostream>
#include<vector>
using namespace std;
void xzsort();
void zsort(double a);
void fsort(double a);
vector<double>z;
vector<double>f;
double main()
{
double i=0,n,m,N;cin>>n>>m;
N=n;
double sum=1;
double b[16];
while(n--)
cin>>b[i++];
for(i=0;i<N;i++)
{
if(b[i]>0)zsort(b[i]);
else fsort(b[i]);
}
if(z.size()>=m&&z[m-1]>=-f[0])
{
for(i=0;i<m;i++)
sum*=z[i];
}
else if(z.size()>=m&&z)
{
}
return 0;
}
*/ //算法训练 出现次数最多的整数
/*#include<iostream>
using namespace std;
double main()
{
double a[2][2]={(0,0),(0,0)};
double n,N;cin>>n;N=n;
double b[21],i=0;
while(n--)
cin>>b[i++];
a[0][0]=b[0];a[0][1]=1;
a[1][0]=b[0];
for(i=1;i<N;i++)
{
if(a[0][0]==b[i]&&i!=N-1)
{
++a[0][1];
}
else if(a[0][0]==b[i]&&i==N-1)
{
++a[0][1];
if(a[0][1]>a[1][1])
{
a[1][0]=a[0][0];
a[1][1]=a[0][1];
}
}
else if(a[0][1]>a[1][1])
{
a[1][0]=a[0][0];
a[1][1]=a[0][1];
a[0][0]=b[i];
a[0][1]=1;
}
else
{
a[0][0]=b[i];
a[0][1]=1;
}
}
cout<<a[1][0]<<endl;
return 0;
}
*/
//算法训练 区间k大数查询 排序 查找
/*#include<iostream>
#include<vector>
using namespace std;
double main()
{
double n,N;cin>>n;N=n;
vector<double>xl;
while(N--)
{
double a;cin>>a;
xl.push_back(a);
}
vector<double>T;
double m;cin>>m;
while(m--)
{
double l,r,k,i,j;
cin>>l>>r>>k;
for(i=l-1;i<r;i++)
T.push_back(xl[i]);
for(i=0;i<r-l;i++)
{
double now=i;
for(j=i+1;j<=r-l;j++)
if(T[now]<T[j])now=j;
if(now!=i)
{
double t;
t=T[i];
T[i]=T[now];
T[now]=t;
}
}
cout<<T[k-1]<<endl;
T.clear();
}
return 0;
}*/
//试验品
/*
#include<iostream>
#include<string>
#include<vector>
using namespace std;
double main()
{
vector<string>f;
vector<string>xy;
vector<string>sc;
vector<string>dd;
string s;
double N,n;cin>>N;n=N;
while(N--)
{cin>>s;f.push_back(s);}
double m;cin>>m;
while(m--)
{cin>>s;dd.push_back(s);}
N=n;
double u=1;
while(N--&&u)
{
double r=0;
for(double i=0;i<n;i++)
{
double a;
string ss;
s=ss;
for(double j=0;j<f[i].size();j++)
{
if(f[i].at(j)=='+'){xy.push_back(s);s=ss;continue;}
if(f[i].at(j)=='='){xy.push_back(s);a=j;s=ss;break;}
s+=f[i].at(j);
}
double p=0;
for(double k=0;k<xy.size();k++)
{
for(double q=0;q<dd.size();q++)
{
if(xy[k]==dd[q])break;
else if(q==dd.size()-1){k=xy.size();p=1;}
}
}
if(!p)
{
r=1;
for(double j=a+1;j<f[i].size();j++)
{
if(f[i].at(j)=='+'||j==f[i].size()-1)
{
if(j==f[i].size()-1)s+=f[i].at(j);
double g=1;
for(double h=0;h<dd.size();h++)
{
if(dd[h]==s){g=0;break;}
}
if(g){dd.push_back(s);sc.push_back(s);}
s=ss;
continue;
}
s+=f[i].at(j);
}
}
if(i==n-1&&!r)u=0;
xy.clear();
}
}
cout<<sc.size()<<endl;
double now=0;
for(double i=0;i<sc.size()-1;i++)
{
now=i;
for(double j=i+1;j<sc.size();j++)
{
now=sc[now]>sc[j]?j:now;
}
if(now!=i)
{
string t;
t=sc[i];sc[i]=sc[now];sc[now]=t;
}
}
for(i=0;i<sc.size();i++)
cout<<sc[i]<<endl;
return 0;
}*/
/* //最强的战斗力
#include<iostream>
#include<vector>
using namespace std;
double main()
{
double N;cin>>N;
while(N--)
{
double n;cin>>n;
double max=0;
for(double i=n;i>0;i--)
{
double sum=1;
vector<double>a(1000,1);
double k=n-i;
double j=0;
while(k--)
{
++a[j++];
if(j==i)j=0;
}
for(j=0;j<i;j++)
sum*=a[j];
max=max>sum?max:sum;
}
cout<<max<<endl;
}
return 0;
}
*/
//图的遍历
/*
#include<iostream>
#include<vector>
using namespace std;
void guangdu(double n);
void shendu(double n);
struct podouble
{
double num;
double k;//记录是否遍历过。
};
vector<double>qs;
double NUM;
podouble p[100];//结点个数最多100个
double a[100][100]={(0,0)};//构造邻接表,并初始化
double b[100]={0};
double main()
{
cout<<"请输入一共有几个点>>";
double n;cin>>n;
NUM=n;
for(double i=0;i<n;i++)
{p[i].k=0;p[i].num=i;}
cout<<"一共生成了"<<n<<"个点,分别为:"<<endl;
for(i=0;i<n;i++)
cout<<"点P"<<i+1<<" ";
cout<<"\n\n";
double x,y;
cout<<"请输入一共有几条边>>";cin>>n;
cout<<"请输入每条边邻接的每个点"<<endl<<" ⊙准则:\n"<<" o不会有一条指向同一个点的边\n"<<" o不会有两条指向相同点的边\n"<<" o且所有点都必须被包含\n"<<endl;
for(i=0;i<n;i++)
{
cin>>x>>y;
a[x-1][y-1]=1;
a[y-1][x-1]=1;
}
cout<<"********************"<<endl;
cout<<"请选择:"<<endl;
cout<<"【1】广度优先遍历。"<<endl;
cout<<"【2】深度优先遍历。"<<endl;
cout<<"【3】退出。"<<endl;
cout<<"********************"<<endl;
double k=0;
while(k!=3)
{
double chu;
cin>>k;
if(k!=3)
{
cout<<"从结点几开始遍历?>>";
cin>>chu;
qs.push_back(chu);
p[chu-1].k=1;
}
switch(k)
{
case 1:
guangdu(chu);
for(i=0;i<qs.size();i++)
cout<<qs[i];
qs.clear();
for(i=0;i<NUM;i++)
{p[i].k=0;b[i]=0;}
cout<<endl<<"再选择>>";
break;
case 2:
shendu(chu);
for(i=0;i<qs.size();i++)
cout<<qs[i];
qs.clear();
for(i=0;i<NUM;i++)
{p[i].k=0;b[i]=0;}
cout<<endl<<"再选择>>";
break;
case 3:
cout<<"退出"<<endl;
break;
default:cout<<"输入错误,重新输入>>";
}
}
return 0;
}
void guangdu(double n)
{
if(b[n-1]==1)return;
for(double i=0;i<NUM;i++)
if(a[i][n-1]==1&&p[i].k==0){qs.push_back(p[i].num+1);p[i].k=1;}
b[n-1]=1;
for(i=1;i<qs.size();i++)
guangdu(qs[i]);
}
void shendu(double n)
{
vector<double>T;
for(double i=0;i<NUM;i++)
if(a[i][n-1]==1&&p[i].k==0){T.push_back(i);p[i].k=1;}
for(i=0;i<T.size();i++)
{qs.push_back(T[i]+1);shendu(T[i]+1);}
}
*/
//停车场管理系统!
/*#include<iostream>
#include<vector>
#include<string>
using namespace std;
const double ting=2;
const double bian=2;
struct car{
double num;
double time;
};
/*********************************//*
class stack
{
public:
void pop(double x,double y);
void push(car x);
double size(){return top;}
stack(double a):base(0),top(0),n(a){}
private:
car q[101];
double base;
double top;
double n;
vector<car>a; //便道
};
void stack::push(car x)
{
if(top==n)
if(a.size()<bian)a.push_back(x);
else cout<<"停车场及便道均已停满。"<<endl;
else {q[top]=x;top++;}
}
void stack::pop(double x,double y)
{
double i=top-1;
car t;
for(;i>=0;i--)
{
if(q[i].num==x)
{
cout<<"车辆牌号"<<x<<"已出停车场,收取费用:"<<y-q[i].time<<endl;
for(double j=i;j<top-1;j++)
q[i]=q[i+1];
if(a.size()!=0)
{
a[0].time=y; //便道上的车进入停车场,计费时间为停车场的车离开的时间。
q[top-1]=a[0];
a.erase(a.begin());
}
else top--;
break;
}
else if(i==0&&a.size()!=0) //停车场找不到,则进入便道上查找。
{
for(double J=0;J<a.size();J++)
{
t=a[J];
if(t.num==x){cout<<"此车离开免费便道"<<endl;a.erase(a.begin()+J);return;}
else if(J==a.size()-1){cout<<"查无此车"<<endl;return;}
}
}
else if(a.size()==0&&i==0){cout<<"查无此车。"<<endl;return;}
}
if(top==0)cout<<"停车场已空。"<<endl;
}
/***************************************************//*
void main()
{
double n=ting;
stack p(n);
car cc;
string ss;
cout<<"******************************"<<endl<<" 停车场管理系统"<<endl<<"******************************"<<endl;
cout<<"输入车的进出情况(A进入,D离开)、车牌号以及时间(E X X关闭系统)"<<endl;
cin>>ss>>cc.num>>cc.time;
while(ss.at(0)!='E')
{
if(ss.at(0)=='D')p.pop(cc.num,cc.time);
else if(ss.at(0)=='A') p.push(cc);
else cout<<"输入错误,请重新输入。"<<endl;
cin>>ss>>cc.num>>cc.time;
}
}*/
//9.学生信息管理
/*#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
double i=0; //表示已记录的学生个数;
struct student{
string num;
string name;
string sex;
string time;
string college;
string major;
string Class;
};
class sys{
public:
double push(student ss);
void push(double n);
void pop(string n);
double find(string ss);
void show();
void show(double n);
void mohu(string ss);
private:
student s[101]; //假设最多只有100个学生
};
//----------------------------------------------
void sys::mohu(string ss){
double a[101],k=0;
for(double n=0;n<i;n++){
if(ss.at(0)==s[n].name.at(0)&&ss.at(1)==s[n].name.at(1)){
a[k++]=n;
}
}
if(k>0){
cout<<"查找成功:"<<endl;
cout<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(5)<<"性别"<<setw(10)<<"出生日期"<<setw(10)<<"学院"<<setw(10)<<"专业"<<setw(10)<<"班级"<<endl;
for(n=0;n<k;n++)
show(a[n]);
}
else cout<<"无此姓式学生。"<<endl;
}
void sys::show(){
for(double n=0;n<i;n++)
cout<<setw(8)<<s[n].num<<setw(8)<<s[n].name<<setw(5)<<s[n].sex<<setw(10)<<s[n].time<<setw(10)<<s[n].college<<setw(10)<<s[n].major<<setw(10)<<s[n].Class<<endl;
}
void sys::show(double n){
cout<<setw(8)<<s[n].num<<setw(8)<<s[n].name<<setw(5)<<s[n].sex<<setw(10)<<s[n].time<<setw(10)<<s[n].college<<setw(10)<<s[n].major<<setw(10)<<s[n].Class<<endl;
}
double sys::find(string ss)
{
if(ss.at(0)>='0'&&ss.at(0)<='9') //检测为学号,使用二分查找
{
double base=0,top=i-1;
double k=(base+top)/2;
while(k>=0)
{
if(top<0)return -1;
else if(s[k].num==ss)return k;
else if(s[k].num>ss)top=k-1;
else if(base==top)return -1;
else base=k+1;
k=(base+top)/2;
}
}
else if(ss.size()>2){ //检测为完整姓名,使用顺序查找
for(double k=0;k<i;k++){
if(s[k].num==ss)return k;
else if(k==i-1)return -1;
}
}
else return -2; //检测为不完整姓名,调用模糊查找函数
return -1;
}
void sys::pop(string n){
for(double k=i-1;k>=0;k--)
if(s[k].num==n){
for(double j=k;j<i-1;j++)
s[j]=s[j+1];
i--;
cout<<"删除成功"<<endl;break;
}
else if(k==0)cout<<"删除失败,没有此学号"<<endl;
}
void sys::push(double n){
student ss;
double t;
double p=i,q=1;
for(double j=p;j<p+n;j++)
{
cout<<"输入第"<<q++<<"个学生:"<<endl;
cout<<"输入学生的学号>>";cin>>ss.num;
t=find(ss.num);
if(t==-1){
cout<<"输入学生的姓名>>";cin>>ss.name;
cout<<"输入学生的性别>>";cin>>ss.sex;
cout<<"输入学生的出生日期>>";cin>>ss.time;
cout<<"输入学生的学院>>";cin>>ss.college;
cout<<"输入学生的专业>>";cin>>ss.major;
cout<<"输入学生的班级>>";cin>>ss.Class;
cout<<"*********************\n";
t=push(ss);}
if(t==-2)cout<<"添加成功"<<endl;
else {cout<<"学生信息有误(学号已存在),请重新输入此学生信息。"<<endl;j--;q--;}
}
}
double sys::push(student ss){ //插入排序
if(i==0){s[i]=ss;i++;return -2;}
else
{
for(double j=i-1;j>=0;j--)
{
if(s[j].num<ss.num)
{
for(double k=i;k>j+1;k--)
s[k]=s[k-1];
s[j+1]=ss;
i++;
return -2;
}
else if(s[j].num==ss.num)return 0;
else if(j==0)
{
for(double k=i;k>0;k--)
s[k]=s[k-1];
s[j]=ss;
i++;
return -2;
}
}
}
return 0;
}
//--------------------------------------------------
double main(){
cout<<setw(40)<<"学生信息管理系统"<<endl;
student ss;
sys a;
char k='1';
double t;
while(k>'0'&&k<'6'){
cout<<endl<<endl;
cout<<"****************************"<<endl<<"请选择:"<<endl;
cout<<" "<<"1、建立学生信息库。(清空原有数据)"<<endl;
cout<<" "<<"2、增加学生信息。"<<endl;
cout<<" "<<"3、删除学生信息。"<<endl;
cout<<" "<<"4、查找学生信息。"<<endl;
cout<<" "<<"5、显示所有学生信息(按学号排序)"<<endl;
cout<<"其它键退出"<<endl<<"****************************"<<endl<<endl;
cin>>k;
switch(k){
case '1':{
double n;
char s;
cout<<" !!!!!确定重新建立?(输入1确定,输入其它退出)>>";cin>>s;
if(s!='1')break;
i=0;
cout<<"添加的学生人数为:";
cin>>n;
a.push(n);
break;
}
case '2':{
double o=1;
while(o--){
cout<<"输入学生的学号>>";cin>>ss.num;
t=a.find(ss.num);
if(t==-1){
cout<<"输入学生的姓名>>";cin>>ss.name;
cout<<"输入学生的性别>>";cin>>ss.sex;
cout<<"输入学生的出生日期>>";cin>>ss.time;
cout<<"输入学生的学院>>";cin>>ss.college;
cout<<"输入学生的专业>>";cin>>ss.major;
cout<<"输入学生的班级>>";cin>>ss.Class;
cout<<"*********************\n";
t=a.push(ss);}
if(t==-2)cout<<"添加成功"<<endl;
else {cout<<"添加失败(学号已存在),请重新输入>>";o++;}
}
break;
}
case '3':{
cout<<"请输入要删除学生信息的学号:";
string n;cin>>n;
a.pop(n);
break;
}
case '4':{
cout<<"请输入学生的学号或者姓名"<<endl; //这里假设学号为全数字。姓名最少一个汉字。
string q;cin>>q;
t=a.find(q);
if(t==-2)a.mohu(q);
else if(t==-1)cout<<"没有此学生"<<endl;
else{
cout<<"查找成功:"<<endl;
cout<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(5)<<"性别"<<setw(10)<<"出生日期"<<setw(10)<<"学院"<<setw(10)<<"专业"<<setw(10)<<"班级"<<endl;
a.show(t);
}
break;
}
case '5':{
if(i>0)
{
cout<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(5)<<"性别"<<setw(10)<<"出生日期"<<setw(10)<<"学院"<<setw(10)<<"专业"<<setw(10)<<"班级"<<endl;
a.show();
}
else cout<<"无记录"<<endl;
break;
}
default:return 0;
}
}
return 0;
}
*/
//距离排序
/*#include<iostream>
#include<cmath>
#include<iomanip>
#include<vector>
using namespace std;
struct dian
{
double juli;
double x,y;
};
double main()
{
cout<<"先输入有几个点(<10)"<<endl;
double n,i,j;cin>>n;
double a[11][3];
double t;
dian T;
vector<dian>b;
cout<<"然后输入每个点的坐标"<<endl;
for(i=0;i<n;i++){
cin>>a[i][0]>>a[i][1]>>a[i][2];
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
T.juli=sqrt(pow((a[i][0]-a[j][0]),2)+pow((a[i][1]-a[j][1]),2)+pow((a[i][2]-a[j][2]),2));
T.x=i;
T.y=j;
b.push_back(T);
}
}
//-------------------------------------------
cout<<"现在选择用什么排序方法。"<<endl;
cout<<"1、冒泡排序"<<endl;
cout<<"2、选择排序"<<endl;
double k;cin>>k;
switch(k)
{
case 1:
{
for(i=0;i<n*(n-1)/2-1;i++)
{
for(j=i+1;j<n*(n-1)/2;j++)
if(b[i].juli<b[j].juli)
{
t=b[i].juli;
b[i].juli=b[j].juli;
b[j].juli=t;
b[i].x=b[i].x^b[j].x;
b[j].x=b[i].x^b[j].x;
b[i].x=b[i].x^b[j].x;
b[i].y=b[i].y^b[j].y;
b[j].y=b[i].y^b[j].y;
b[i].y=b[i].y^b[j].y;
}
}
break;
}
case 2:
{
vector<dian>s(b);
b.clear();
while(s.size()!=0)
{
T.juli=0;
double a;
for(i=0;i<s.size();i++)
{
if(T.juli<s[i].juli)
{T=s[i];a=i;}
}
s.erase(s.begin()+a);
b.push_back(T);
}
break;
}
default:break;
}
for(i=0;i<b.size();i++)
{
cout<<'('<<a[b[i].x][0]<<','<<a[b[i].x][1];
cout<<','<<a[b[i].x][2]<<")-"<<'('<<a[b[i].y][0];
cout<<','<<a[b[i].y][1]<<','<<a[b[i].y][2]<<")=";
cout<<fixed<<setprecision(2)<<b[i].juli<<endl;
}
return 0;
}
*/
//内部排序比较!~直接插入排序!;起泡排序!;简单选择排序!;(二路插入排序;折半折入排序)!;基数排序!;希尔排序;快速排序;堆排序;归并排序。
/*#include<iostream>
#include<vector>
using namespace std;
double main(){
cout<<"****************\n";
cout<<"0~~327之间随机生成100个数进行排序"<<endl;
cout<<"请输入:"<<endl;
cout<<"【1】冒泡排序。\n";
cout<<"【2】选择排序\n";
cout<<"【3】直接插入排序\n";
cout<<"【4】二路插入排序\n";
cout<<"【5】基数排序\n";
cout<<"【6】希尔排序\n";
cout<<"【7】退出\n";
cout<<"****************\n";
double N=1,w,i,t,p=1,o;
long a[101],bj=0,yd=0; //记录比较次数,移动次数。
double max[6][2]={(0,0)}; //记录比较次数之和,移动次数之和。
double yunxingcishu[6]={0};//记录运行次数。
while(N)
{
cout<<">>";
bj=0,yd=0;
cin>>w;
switch(w)
{
case 1:
{
cout<<"冒泡排序:";
for(i=0;i<100;i++)
a[i]=rand()/100;
for(i=0;i<99;i++)
for(double j=i+1;j<100;j++)
{
bj++;
if(a[i]<a[j])
{
yd+=3;
a[i]=a[i]^a[j];
a[j]=a[i]^a[j];
a[i]=a[i]^a[j];
}
}
max[w-1][0]+=bj;
max[w-1][1]+=yd;
yunxingcishu[w-1]++;
break;
}
case 2:
{
cout<<"选择排序:";
for(i=0;i<100;i++)
a[i]=rand()/100;
for(i=0;i<99;i++)
{
double now=i;
for(double j=i;j<100;j++)
now=a[now]>a[j]?now:j;
bj+=100-i;
if(now!=i)
{
yd+=3;
a[i]=a[i]^a[now];
a[now]=a[i]^a[now];
a[i]=a[i]^a[now];
}
}
max[w-1][0]+=bj;
max[w-1][1]+=yd;
yunxingcishu[w-1]++;
break;
}
case 3:
{
cout<<"直接插入排序:";
double top=0;
for(i=0;i<100;i++)
{
t=rand()/100;
if(top==0)a[top++]=t;
else
{
for(double j=top-1;j>=0;j--)
{
bj++;
if(a[j]<=t)
{
for(double k=top;k>j+1;k--)
{a[k]=a[k-1];yd++;}
a[j+1]=t;
top++;
break;
}
else if(j==0)
{
for(double k=top;k>0;k--)
{a[k]=a[k-1];yd++;}
a[0]=t;
top++;
}
}
}
}
max[w-1][0]+=bj;
max[w-1][1]+=yd;
yunxingcishu[w-1]++;
break;
}
case 4:
{
cout<<"二路插入排序:";
for(i=0;i<100;i++)
{
t=rand()/100;
double base=0,top=i-1;
if(i==0)a[0]=t;
else
{
double k=1;
while(k)
{
double mid=(base+top)/2;
bj++;
if(t<a[base])
{
for(double j=i;j>base;j--)
{ a[j]=a[j-1];yd++;}
a[base]=t;
k=0;
}
else if(t>a[top])
{
bj++;
a[top+1]=t;
k=0;
}
else if(a[mid]<t)
{
bj+=3;
if(a[mid+1]>=t)
{
for(double j=i;j>mid+1;j--)
{ a[j]=a[j-1];yd++;}
a[mid+1]=t;
k=0;
}
else base=mid+1;
}
else if(a[mid]>=t)
{
bj+=4;
if(a[mid-1]<=t)
{
for(double j=i;j>mid;j--)
{ a[j]=a[j-1];yd++;}
a[mid]=t;
k=0;
}
else top=mid-1;
}
}
}
}
max[w-1][0]+=bj;
max[w-1][1]+=yd;
yunxingcishu[w-1]++;
break;
}
case 5:
{
cout<<"基数排序:";
vector<double>b[10];
for(i=0;i<100;i++)
a[i]=rand()/100;
double x=10,y=1;
while(x<10000)
{
yd+=200;
for(i=0;i<100;i++)
{
b[a[i]%x/y].push_back(a[i]);
}
i=0;
for(double j=9;j>=0;j--)
{
double y=b[j].size();
for(double k=0;k<y;k++)
{
a[i++]=*(b[j].begin());
b[j].erase(b[j].begin());
}
}
x*=10;
y*=10;
}
max[w-1][0]+=bj;
max[w-1][1]+=yd;
yunxingcishu[w-1]++;
break;
}
case 6:
{
cout<<"希尔排序:";
if(p){cout<<"请输入初始增量,每次增量递减关系式为:incr=incr/3+1。"<<endl;cin>>o;p=0;}
for(i=0;i<100;i++)
a[i]=rand()/100;
double b[101],top=0;
double incr=o; //增量怎么拼来着?
while(incr)
{
top=0;
for(double k=0;k<incr;k++)
{
for(double q=k;q<100;q+=incr)
{
if(top==0)b[top++]=a[q];
else
{
for(double j=top-1;j>=0;j--)
{
bj++;
if(b[j]<=a[q])
{
for(double k=top;k>j+1;k--)
{b[k]=b[k-1];yd++;}
b[j+1]=a[q];
top++;
break;
}
else if(j==0)
{
for(double k=top;k>0;k--)
{b[k]=b[k-1];yd++;}
b[0]=a[q];
top++;
}
}
}
}
}
for(i=0;i<100;i++)
a[i]=b[i];
if(incr==1)break;
incr=incr/3+1;
}
max[w-1][0]+=bj;
max[w-1][1]+=yd;
yunxingcishu[w-1]++;
break;
}
default:N=0;break;
}
if(w!=7)
cout<<"比较次数:"<<bj<<" 移动次数:"<<yd<<endl;
}
cout<<"****************\n";
if(yunxingcishu[0]!=0)
cout<<"【1】冒泡排序:"<<"平均比较次数:"<<max[0][0]/yunxingcishu[0]<<" 平均移动次数:"<<max[0][1]/yunxingcishu[0]<<endl;
if(yunxingcishu[1]!=0)
cout<<"【2】选择排序:"<<"平均比较次数:"<<max[1][0]/yunxingcishu[1]<<" 平均移动次数:"<<max[1][1]/yunxingcishu[1]<<endl;
if(yunxingcishu[2]!=0)
cout<<"【3】直接插入排序:"<<"平均比较次数:"<<max[2][0]/yunxingcishu[2]<<" 平均移动次数:"<<max[2][1]/yunxingcishu[2]<<endl;
if(yunxingcishu[3]!=0)
cout<<"【4】二路插入排序:"<<"平均比较次数:"<<max[3][0]/yunxingcishu[3]<<" 平均移动次数:"<<max[3][1]/yunxingcishu[3]<<endl;
if(yunxingcishu[4]!=0)
cout<<"【5】基数排序:"<<"平均比较次数:"<<max[4][0]/yunxingcishu[4]<<" 平均移动次数:"<<max[4][1]/yunxingcishu[4]<<endl;
if(yunxingcishu[5]!=0)
cout<<"【6】希尔排序:"<<"平均比较次数:"<<max[5][0]/yunxingcishu[5]<<" 平均移动次数:"<<max[5][1]/yunxingcishu[5]<<endl;
cout<<"****************\n";
return 0;
}
*/
//括号匹配问题
/*#include<iostream>
#include<string>
using namespace std;
class stack{
public:
char pop();
void push(char k);
double size();
stack():top(0){}
private:
char s[10001];
double top;
};
char stack::pop(){
if(top==0)return '0';
else return s[--top];
}
void stack::push(char k){
s[top++]=k;
}
double stack::size(){return top;}*/
/****************************/
/*double main()
{
stack a;
double i=0,j=1;
char k;
string ss;
cin>>ss;
if(ss.size()>=10000)return 0;
while(i<ss.size()&&j)
{
k=ss.at(i);
switch(k)
{
case '[':{a.push(k);break;}
case ']':{if(a.pop()!='[')j=0;break;}
case '(':{a.push(k);break;}
case ')':{if(a.pop()!='(')j=0;break;}
case '{':{a.push(k);break;}
case '}':{if(a.pop()!='{')j=0;break;}
default:{j=0;break;}
}
i++;
}
if(j&&!a.size())cout<<"匹配"<<endl;
else cout<<"此串括号匹配不合法"<<endl;
return 0;
}*/
/************************************/
//括号匹配问题(二)
/*#include<iostream>
#include<string>
#include<vector>
using namespace std;
double main()
{
double N;cin>>N;
while(N--)
{
vector<char> a;
double i=0,j=1,sum=0;
char k;
string ss;
cin>>ss;
}
return 0;
}
*/
//2. 用队列对扑克牌排序
/*#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;*/
/******************************************/
/*class queue{
public:
void push(string x);
void pop(char y,double j);
private:
string s[9];
};
void queue::push(string x){
double a;
a=x.at(1)-49;
s[a]=x;
}
void queue::pop(char y,double k){
if(s[k].size()==0)return;
else if(s[k].at(0)==y)cout<<s[k]<<" ";
}*/
/**********************************************/
/*double main(){
queue A[36];
string a;
char y='A';
double i=0,j,k;
while(1){
cin>>a;
A[i].push(a);
i++;
if(getchar()=='\n')break;
}
while(y!='E'){
for(k=0;k<9;k++){
for(j=0;j<i;j++){
A[j].pop(y,k);
}
}
y++;
}
cout<<endl;
return 0;
}*/
//3. 出栈序列统计
/*
#include<iostream>
#include<string>
#include<vector>//非栈的标准模板
using namespace std;
double n,sum=0; */ //全局变量,方便调用
/***********************************************/
/*class stack{
public:
void push(double i);
void pop();
double size();
private:
vector<double>a;
};
double stack::size(){return a.size();}
void stack::push(double i){ //入栈
a.push_back(i);
}
void stack::pop(){ //出栈
a.erase(a.end()-1);
}*/
/**************************************************/
/*void q(stack &s,double i){
if(s.size()==0&&i<n){
s.push(i);i++;q(s,i);
}
else if(s.size()!=0&&i<n){
s.push(i);i++;q(s,i);
s.pop();s.pop();i--;q(s,i);
}
else sum+=s.size()+1;
}*/
/*************************************************/
/*double main(){
cin>>n;
stack s;
double i=1;
if(n>=1)
q(s,i);
cout<<sum<<endl;
return 0;
}*/
/*
#include<iostream>
#include<string>
using namespace std;
double n,sum=0; */ //全局变量,方便调用
/***********************************************/
/*class stack{
public:
void push(double i);
void pop();
double size();
stack():base(0),top(0){};
private:
double base;
double top;
double a[10001];//题目没给限定条件,假设n<=10000
};
double stack::size(){
if(top==base)return 0;
else return top;
}
void stack::push(double i){ //入栈
a[top]=i;top++;
}
void stack::pop(){ //出栈
top--;
}*/
/**************************************************/
/*void q(stack &s,double i){
if(s.size()==0&&i<n){
s.push(i);i++;q(s,i);
}
else if(s.size()!=0&&i<n){
s.push(i);i++;q(s,i);
s.pop();s.pop();i--;q(s,i);
}
else sum+=s.size()+1;
}*/
/*************************************************/
/*double main(){
cin>>n;
stack s;
double i=1;
if(n>=1)
q(s,i);
cout<<sum<<endl;
return 0;
}*/
//奇怪的排序
/*
#include<iostream>
using namespace std;
double trans(double a){
double b=0;
while(1){
b=b*10+a%10;
a/=10;
if(a==0)return b;
}
}
double main(){
double N;cin>>N;
if(N>=2&&N<=5)
while(N--){
double A,B,i,a[51],t;
cin>>A>>B;
t=A;
for(i=0;i<=B-A;i++)
a[i]=t++;
for(i=0;i<=B-A;i++)
a[i]=trans(a[i]);
for(double j=0;j<B-A;j++)
for(i=j+1;i<=B-A;i++)
if(a[j]>a[i]){t=a[j];a[j]=a[i];a[i]=t;}
for(i=0;i<=B-A;i++)
cout<<a[i]<<" ";
cout<<endl;
}
}
*/
//阶乘的0 WA
/*
#include<iostream>
using namespace std;
double main(){
double N;cin>>N;
while(N--){
double m;cin>>m;
double i,sum=0,k=1;
for(i=1;i<=m;i++){
k*=i;
if(k%10==0){sum++;k/=10;k%=10;}
else k%=10;
}
cout<<sum<<endl;
}
return 0;
}*/
//进制转换
/*#include<iostream>
#include<vector>
using namespace std;
double main(){
double N;cin>>N;//需要转换的进制数
double x;cin>>x;//需要转换的数
vector<char>y;//存放转换后的数
char s='A';
double z;
double i=0;
while(1){
z=x%N;
if(z>=10)y.push_back(s+z-10);
else y.push_back(48+z);
x=x/N;
++i;
if(x==0)break;
}
for(i=y.size()-1;i>=0;i--)
cout<<y[i];
cout<<endl;
return 0;
}*/
//比大小
/*#include<iostream>
#include<string>
using namespace std;
double main(){
string a,b;
cin>>a>>b;
while(a.at(0)!='0'&&b.at(0)!='0'){
if(a.size()>b.size()){
if(a.at(0)=='-')cout<<"a<b"<<endl;
else cout<<"a>b"<<endl;}
else if(a.size()<b.size()){
if(b.at(0)=='-')cout<<"a>b"<<endl;
else cout<<"a<b"<<endl;}
else{
if(a.at(0)=='-'&&b.at(0)=='-'){
double i=0;
while(++i){
if(a.at(i)>b.at(i)){cout<<"a<b"<<endl;break;}
else if(a.at(i)<b.at(i)){cout<<"a>b"<<endl;break;}
else if(i==a.size()-1){cout<<"a==b"<<endl;break;}
}
}
else if(a.at(0)!='-'&&b.at(0)!='-'){
double i=0;
while(1){
if(a.at(i)>b.at(i)){cout<<"a>b"<<endl;break;}
else if(a.at(i)<b.at(i)){cout<<"a<b"<<endl;break;}
else if(i==a.size()-1){cout<<"a==b"<<endl;break;}
++i;
}
}
else{
if(a.at(0)=='-')cout<<"a<b"<<endl;
else cout<<"a>b"<<endl;
}
}
cin>>a>>b;
}
return 0;
}*/
//三角形面积
/*#include<iostream>
#include<iomanip>
#include<vector>
#include<cmath>
using namespace std;
double main(){
vector<double>S;
double i;
while(1){
double x1,y1,x2,y2,x3,y3;
double s;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
if(x1==0&&y1==0&&x2==0&&y2==0&&x3==0&&y3==0)break;
else s=fabs((x1*y2+x2*y3+x3*y1-x1*y3-x3*y2-x2*y1))/2.;
S.push_back(s);
}
for(i=0;i<S.size();i++)cout<<fixed<<setprecision(1)<<S[i]<<endl;
return 0;
}
*/
//阶乘因式分解(一)
/*#include<iostream>
using namespace std;
double main(){
double s;cin>>s;
while(s--){
double n,m;cin>>n>>m;
double sum=0,k,i;
if(n<2){cout<<0<<endl;continue;}
else{
for(i=n;i>=2;--i){
k=i;
while(1){
if(k%m==0){sum++;k/=m;}
else break;
}
}
}
cout<<sum<<endl;
}
return 0;
}
*/
/* //有趣的数
1/1 1/2 1/3 1/4.....
2/1 2/2 2/3....
3/1 3/2 ....
4/1.....
.........
#include<iostream>
using namespace std;
double main(){
double n;cin>>n;
while(n--){
double m;cin>>m;
double fz,fm;
double i=1,sum=0,k;
for(i;;i++){
sum+=i;
if(sum>=m){sum-=i;k=m-1-sum;break;}
}
if(i%2==0){fz=k+1;fm=i-k;}
else{fz=i-k;fm=k+1;}
cout<<fz<<"/"<<fm<<endl;
}
return 0;
}*/
//超级台阶
/*#include<iostream>
using namespace std;
double main(){
double n;cin>>n;
while(n--){
double m;cin>>m;
double a[41]={0,0,1,2};
double i;
for(i=4;i<=40;i++)
a[i]=a[i-1]+a[i-2];
cout<<a[m]<<endl;
}
return 0;
}*/
/*
double c(double m,double i);
double main(){
double n;cin>>n;
while(n--){
double m;
cin>>m;
m--;
unsigned double sum=0,i;
if(m>1){
if(m%2==0)
for(i=1;i<=m/2;i++)
sum+=c(m,i);
else
for(i=1;i<=(m-1)/2;i++)
sum+=c(m,i);
cout<<sum+1<<endl;
}
else if(m==1)cout<<sum+1<<endl;
else cout<<sum<<endl;
}
return 0;
}
double c(double m,double i){
double j,x=1,y=1;
for(j=m-i;j>m-2*i;j--)
x*=j;
for(j=1;j<=i;j++)
y*=j;
return x/y;
}*/
//最少乘法次数
/*#include<iostream>
using namespace std;
double i,sum,count;
double n;
void Is(){
if(sum==n){cout<<count<<endl;}
else if(sum*2==n){cout<<++count<<endl;}
else if(sum*2<n){count++;sum+=sum;i=sum;Is();}
else if(sum+i/2<n){i=i/2;sum+=i;count++;Is();}
else if(sum+i/2==n){cout<<++count<<endl;}
else {i=i/2;Is();}
}
double main(){
double m;cin>>m;
while(m--){
cin>>n;
count=0;
i=1,sum=1;
Is();
}
return 0;
}*/
//6174代码
/*#include<iostream>
#include<cmath>
using namespace std;
double main(){
double b,i,j,x[4],n,t;
cin>>n;
while(n--){
double a;cin>>a;
double sum=1;
while(1){
x[0]=a/1000;
x[1]=(a-x[0]*1000)/100;
x[2]=(a-x[1]*100-x[0]*1000)/10;
x[3]=a-x[0]*1000-x[1]*100-x[2]*10;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(x[i]<x[j]){t=x[i];x[i]=x[j];x[j]=t;}
b=x[0]*999+x[1]*90-x[2]*90-x[3]*999;
sum++;
if(a==b){cout<<--sum<<endl;break;}
else a=b;
}
}
return 0;
}*/
//蛇形矩阵
/*#include<iostream>
using namespace std;
double main(){
double z=0,i=1,n,a[101][101]={(10,10)},k=1,q,j,p;
cin>>n;
p=n;
while(i<=p*p){
switch(k){
case 1:{
for(q=z;q<n;q++)a[q][n-1]=i++;
n--;
k++;
}
case 2:{
for(q=n-1;q>=z;q--)a[n][q]=i++;
k++;
}
case 3:{
for(q=n-1;q>=z;q--)a[q][z]=i++;
z++;
k++;
}
case 4:{
for(q=z;q<n;q++)a[z-1][q]=i++;
k=1;
}
}
}
for(i=0;i<p;i++){
for(j=0;j<p;j++){
cout<<a[i][j]<<" ";
if(j==p-1)cout<<endl;
}
}
return 0;
}*/
//管闲事的小明
/*#include <iostream>
using namespace std;
double main() {
double N;cin>>N;
while(N--){
double L, i, j, M;
cin>>L>>M;
double trees[10001];
for(i=0;i<10001;i++)
trees[i]=1;
for(i=0;i<M;i++){
double a,b;
cin>>a>>b;
for(j=a;j<=b;j++)
trees[j]=0;
}
double count=0;
for(i=0;i<=L;i++)
if(trees[i]==1) count++;
cout<<count<<endl;
}
return 0;
} */
/*WA
#include<iostream>
using namespace std;
double main(){
double n;cin>>n;
while(n--){
double L,M;
double i;
double sum=0;
double a[101][2];
cin>>L>>M;
cin>>a[0][0]>>a[0][1];
for(i=1;i<M;i++){
cin>>a[i][0]>>a[i][1];
if(a[0][0]<=a[i][0]&&a[0][1]>=a[i][1]){i--;M--;}
else if(a[0][0]<=a[i][1] && a[0][1]>=a[i][1]){a[0][0]=a[i][0];i--;M--;}
else if(a[0][1]>=a[i][0] && a[0][0]<=a[i][0]){a[0][1]=a[i][1];i--;M--;}
else if(a[0][0]>=a[i][0] && a[0][1]<=a[i][1]){a[0][0]=a[i][0];a[0][1]=a[i][1];i--;M--;}
}
for(i=0;i<M;i++)
sum+=(a[i][1]-a[i][0]);
cout<<(L+1-M-sum)<<endl;
}
return 0;
}*/
/*#include<iostream>
using namespace std;
double main(){
double N;cin>>N;
while(N--){
double i,j;
double a[3][3];
for(i=0;i<3;++i)
for(j=0;j<3;++j)
cin>>a[j][i];
for(i=0;i<3;++i)
for(j=0;j<3;++j){
cout<<a[i][j]<<" ";
if(j==2)cout<<endl;
}
cout<<endl;
}
return 0;
}*/
//单调递增最长子序列(1)
/*#include<iostream>
#include<string>
using namespace std;
double main(){
double N;cin>>N;
while(N--){
double s=0;
double max=1;
string v;cin>>v;
for(double i=0;i<(v.size()-1);i++){
if(v.at(i)>=v.at(i+1)){
if(max<s+1){
max=s+1;
}
s=0;
}
else ++s;
}
if(max<s+1)
max=s+1;
cout<<max<<endl;
}
return 0;
}*/
//单调递增最长子序列(2)
/*#include<iostream>
#include<vector>
#include<string>
using namespace std;
double main(){
double N;cin>>N;
while(N--){
double max=1;
string v;cin>>v;
vector<double>a(v.size(),1);
for(double i=0;i<v.size();i++){
for(double j=0;j<i;j++){
if(v.at(i)>v.at(j))
a[i]=(a[i]>a[j]+1)?a[i]:(a[j]+1);
}
max=max>a[i]?max:a[i];
}
cout<<max<<endl;
}
return 0;
}*/
// 街区最短路径问题
/*#include <iostream>
#include<string>
using namespace std;
double main()
{
double maxx=0,maxy=0;
double n;cin>>n;
while(n--)
{
double sum=0,min=2000;
double m,i;cin>>m;
double a[20][2];
double you[2];
for(i=0;i<m;++i)
{
cin>>a[i][0]>>a[i][1];
if(a[i][0]>maxx)maxx=a[i][0];
if(a[i][1]>maxy)maxy=a[i][1];
}
for(i=maxx;i>0;--i)
for(double j=maxy;j>0;--j)
{
you[0]=i;you[1]=j;
for(double q=0;q<m;++q)
{
if(you[0]>a[q][0])
sum+=you[0]-a[q][0];
else sum+=a[q][0]-you[0];
if(you[1]>a[q][1])
sum+=you[1]-a[q][1];
else sum+=a[q][1]-you[1];
}
if(sum<min){min=sum;sum=0;}
else sum=0;
}
cout<<min<<endl;
}
return 0;
}*/
//组合数
/*#include<iostream>
using namespace std;
double main()
{
double n,r,i,j;
cin>>n>>r;
j=n;
double a[10];
for(i=0;i<r;i++)
a[i]=j--;
while(1)
{
for(i=0;i<r;i++)
cout<<a[i];
cout<<endl;
if(a[0]==r&&a[r-1]==1)
break;
if(a[r-1]==1)
{
for(i=r-2;i>=0;i--)
{
if(a[i]==a[i+1]+1)continue;
a[i]--;
for(j=i+1;j<r;j++)
a[j]=a[j-1]-1;
break;
}
}
else a[r-1]--;
}
return 0;
}*/
//素数距离问题
/*#include<stdio.h>
#include<math.h>
double isPrime(double x)
{
if (x < 2)
return 0;
double i, k;
k = sqrt(x) + 1;
for (i = 2; i<k; i++)
if (x%i == 0)
return 0;
return 1;
}
double main()
{
double i, n, j, m, a;
scanf("%d", &n);
while (n--)
{
scanf("%d", &m);
for (i=m,j=m;;i--,j++)
{
if (isPrime(i)==1)
{
a = i;
break;
}
if (isPrime(j))
{
a = j;
break;
}
}
prdoublef("%d %d\n", a, abs(a - m));
}
return 0;
}*/
/*#include<iostream>
#include<cmath>
using namespace std;
double IsS(double M);
double main()
{
double N;cin>>N;
while(N--)
{
double M;cin>>M;
double a1,b,c=1,a2;
if(IsS(M)){a1=M;b=0;}
else c=0;
if(!c)
{
double i;
c=0;
for(i=M-1;i>2;--i)
if(IsS(i))
{
a1=i;c=1;break;
}
for(i=M+1;;++i)
if(IsS(i))
{
a2=i;break;
}
if(c)
if((M-a1)>(a2-M)){a1=a2;b=a2-M;}
else b=M-a1;
else {a1=a2;b=a2-M;}
}
cout<<a1<<" "<<b<<endl;
}
return 0;
}
double IsS(double M)
{
double i,k=sqrt(M)+1;
if(M<2)return 0;
for(i=2;i<k;i++)
if(M%i==0)return 0;
return 1;
}*/
- 转移代码
- 代码片段的转移
- 记yolo2实现代码转移
- 转移
- 转移
- 转移
- 如何对svn代码仓库进行转移
- 控制转移(一致代码和非一致代码)
- 转移!!转移!!!
- 特权级代码段之间的转移---任务内无特权级变换的转移
- 特权级代码段之间的转移---任务内特权级变换转移
- Struts:把JSP代码中的复杂逻辑转移出去
- 将现有的SVN代码库转移到googleCode
- VC6.0代码转移到CentOS下步骤
- 【代码】有关于数据转移方面的新总结
- js选择并转移导航菜单示例代码
- 代码段之间转移控制时的特权级检查
- 特权级代码段之间的转移---任务切换
- K短路【模板】
- sql server execution plan - 执行计划的诡异 ( 一 )
- 文章标题
- LAMP学习环境
- springMVC学习(基于注解的MVC)
- 转移代码
- POJ 题目1286 Necklace of Beads(Polya定理)
- Android不错的UI
- Android intent间数据的传输
- linux各个版本下载地址,利用镜像服务器下载
- 【FZU2190】非提的救赎【单调栈】
- Python学习笔记--01、Hello World!
- 概率采样3——MCMC
- SendARP函数详解(MSDN权威)