模拟

P4924
魔法少女的旋转,关于顺时针逆时针旋转,我发现的规律是,建立类似坐标轴的东西,然后相对于旋转原点,前后变幻的点的坐标之间是有联系的

void bianhua(int i)
{
	for(int xx=x[i]-r[i];xx<=x[i]+r[i];xx++)
	{
		for(int yy=y[i]-r[i];yy<=y[i]+r[i];yy++)
		{
			if(!fx[i])
			b[x[i]+yy-y[i]][y[i]-xx+x[i]]=a[xx][yy];
			else
			b[x[i]+y[i]-yy][y[i]+xx-x[i]]=a[xx][yy];
		}
	}
	for(int xx=x[i]-r[i];xx<=x[i]+r[i];xx++)
	{
		for(int yy=y[i]-r[i];yy<=y[i]+r[i];yy++)
		{
			a[xx][yy]=b[xx][yy];
		}
	}
}

感觉其他大佬也是这种想法,写的可能还没有我的好理解

P1518
抓住他们两个人时间相同,所以终止条件是两个人走到相同的位置上去,利用xx,yy切换方向,但这里是可能换方向,可能不换方向的,不换方向时,其实就是fx+xx[ff],里面的ff不变,换方向就是ff=(ff+1)%4,这是在一个永无止尽直到自己break的循环里面,还有就是不能走回走过的地方,当然可以用vis数组,或者是设置标志量,这样一个一维的数组就可以了

#include<iostream>
using namespace std;
int xx[]={-1,0,1,0};
int yy[]={0,1,0,-1};
char a[12][12];
long long int zt[19900000]={0},nx,ny,fx,fy,ff,cf,nt,t;
int main()
{
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<10;j++)
		{
			cin>>a[i][j];
			if(a[i][j]=='C')
			{
				nx=i;
				ny=j;
			}
			if(a[i][j]=='F')
			{
				fx=i;
				fy=j;
			}
		 } 
	 } 
	 while(1)
	 {
	 	if(nx==fx&&ny==fy)
	     {
		 	cout<<t;
		 	return 0;
		  } 
		 nt=fx+fy*10+nx*100+ny*1000+ff*10000+cf*40000;
		
		 if(zt[nt])
		 {
		 	cout<<0;
		 	return 0;
		 }
		 zt[nt]=1;
		 if(fx+xx[ff]<0||fx+xx[ff]>=10||fy+yy[ff]<0||fy+yy[ff]>=10||a[fx+xx[ff]][fy+yy[ff]]=='*')
		 ff=(ff+1)%4;
		 else 
		 {fx=fx+xx[ff];fy=fy+yy[ff];
		 }
		 if(nx+xx[cf]<0||nx+xx[cf]>=10||ny+yy[cf]<0||ny+yy[cf]>=10||a[nx+xx[cf]][ny+yy[cf]]=='*')
		 cf=(cf+1)%4;
		 else
		 {nx=nx+xx[cf];ny=ny+yy[cf];
		 }
		 t++;
		 
	 }
	 return 0;
	 
 } 

P1067
这种题目就是模拟吧,分类主要是头尾,符号,0的问题

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int n,a;
	cin>>n;
	for(int i=n;i>=0;i--)
	{
		cin>>a;
		if(a)
		{
			if(i!=n&&a>0) cout<<"+";
			if(abs(a)>1||i==0)cout<<a;
			if(a==-1&&i)cout<<"-";
			if(i>1)cout<<"x^"<<i;
			if(i==1)cout<<"x";
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值