ACM-AtCoder Beginner Contest 157-2020.3.3-2

首先,自我介绍一下,我是一个刚刚开始训练的小菜鸡。。。。。
下面开始正题吧。
今天晚上做了两道Atcoder Beginner 的两道题,其中第二道题,让我感到吐血,下面附图:

//Atcoder 的规定时间是2000ms,而这个程序跑了2103ms.....我要吐血!!!! 

#include<stdio.h>

void select(int num[9])
{
 int i=0,j=0,len=0;
 int c[5][3],list1[9]={0};
 
 
 while(i<9)
 {
 	if(num[i]!=0)
	 {
 		len++;
 		list1[j++]=num[i];
	 }
	  
 }
 	if(len<3)
 	printf("No\n");
	else if(len>5)
	printf("Yes\n");
	if 
	else
	{
		for(i=0;i<len;i++)
		{
			c[i][0]=list1[i]/3;
			c[i][1]=list1[i]%3;
			c[i][2]=list1[i]%4;
		}
		
		for(i=0;i<3;i++)
		{
			int temp=0;
			temp=c[i][0];
			for(j=1;j<len;j++)
			{
				if(temp!=c[i][j])
					break;
			} 
			if(j==len)
			{
				printf("Yes\n");
				break; 
			}
			
		}
		if(i==3)
		printf("No\n");
	}
 

}
 
int main()
{
	int a[3][3];
	int n,i,j,list[9],num[9]={0};
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
		scanf("%d",&a[i][j]);
		list[3*i+j-1]=a[i][j];
		}
	
	}
	scanf("%d",&n);
	
	for(i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
		j=0;
		while(j<9)
		{
			if(num[i]!=list[j])
				j++;
			else 
				{
					num[i]=j+1;
					break; 
				} 
		}
		if(j==9)
		num[i]=0;
		
	}
	select(num);
	return 0;
}
//下面附上此题正确解法以及比较分析,下面的解法是在Atcoder上找的。
//在初期我们俩的方法相同,而在后期,我将信息列成一维,而下面这位同学则列为二维,并通过循环来摆脱大部分情况的单列,所以时间较少
//下回要好好考虑用什么结构的数据!!! 
 

/* 
#include<iostream>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
int a[4][4],v[4][4];
int b[105];
int n;
int main()
{
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=3;j++)
		{
			cin>>a[i][j];
		}
	}
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>b[i];
	}
	memset(v,0,sizeof(v));
	for(int i=0;i<n;i++)
	{
		int flag=0;
		for(int j=1;j<=3;j++)
		{
			
			for(int k=1;k<=3;k++)
			{
				if(a[j][k]==b[i])
				{
					v[j][k]=1;
					flag=1;
					break;
				}	
			}
			if(flag==1)	break;
		}
	}
	int flag=0;
	for(int i=1;i<=3;i++)
	{
		if(v[i][1]==1&&v[i][2]==1&&v[i][3]==1||v[1][i]==1&&v[2][i]==1&&v[3][i]==1)
		{
			flag=1;
		}
	}
	if(v[1][1]==1&&v[2][2]==1&&v[3][3]==1||v[1][3]==1&&v[2][2]==1&&v[3][1]==1)
		flag=1;
	if(flag)
		cout<<"Yes"<<endl;
	else
		cout<<"No"<<endl;
} 
*/ 

好了,希望以后自己可以慢慢变强吧,毕竟算法还是挺重要的。
小菜鸡变身-》》》》菜鸡中的战斗机!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值