看题或提交测试
A-1
#include <bits/stdc++.h>
using namespace std;
int n,a[110][110],f;
int main()
{
cin>>n;
getchar();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
char c;
scanf("%c",&c);
a[i][j]=c-'0';
}
getchar();
}
for(int i=1;i<=n;i++)
{
int x=i,y=n+1,r;
while(true)
{
if(y>0&&a[y-1][x]==0)
{
y-=1;
}
else if(x>0&&a[y][x-1]==0)
{
x-=1;
}
else if(y==0)
{
r=1;
break;
}
else
{
r=0;
break;
}
}
if(r==0)
{
if(f==1)cout<<" ";
cout<<i;
f=1;
}
}
return 0;
}
A-2
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,t=0;
cin>>n;
stack<int>s1,s2;
while(n--)
{
char c;
cin>>c;
if(c=='I')
{
int x;
cin>>x;
s1.push(x);
}
else
{
if(!s2.empty())
{
t++;
cout<<s2.top()<<" "<<t<<endl;
s2.pop();
t=0;
}
else if(!s1.empty())
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
t+=2;
}
t++;
cout<<s2.top()<<" "<<t<<endl;
s2.pop();
t=0;
}
else
{
cout<<"ERROR"<<endl;
}
}
}
return 0;
}
A-3
#include <bits/stdc++.h>
using namespace std;
int n,in[25],pre[25],r0,r1,r2;
void f(int pl,int pr,int il,int ir)
{
if(pl>=pr)return;
int i;
for(i=il;i<=ir;i++)
{
if(in[i]==pre[pl])
{
break;
}
}
if(i==il||i==ir)r1++;
else r2++;
f(pl+1,pl+(i-il),il,i-1);
f(pl+(i-il)+1,pr,i+1,ir);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>in[i];
for(int i=1;i<=n;i++)cin>>pre[i];
f(1,n,1,n);
r0=n-r1-r2;
cout<<r1<<" * "<<r2<<" / "<<r0<<" = ";
printf("%d",(int)(r1*1.0*r2/r0));
return 0;
}
A-4
#include <bits/stdc++.h>
using namespace std;
int n,p,f;
struct s{
int a,b;
}s[100010];
vector<int>v(1000010,-1),r;
void dfs(int x)
{
if(x==p)
{
if(f==0)r=v;
else if(f==1&&v<r)r=v;
return;
}
if(v[s[x].a]==-1)
{
v[s[x].a]=s[x].b;
dfs(x+1);
v[s[x].a]=-1;
}
if(v[s[x].b]==-1)
{
v[s[x].b]=s[x].a;
dfs(x+1);
v[s[x].b]=-1;
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
if(y==0||x>=10)v[x]=y;
else if(x==0||y>=10)v[y]=x;
else
{
s[p].a=x;
s[p++].b=y;
}
}
dfs(0);
for(int i=1;i<=n;i++)cout<<r[i];
return 0;
}