Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

真心给跪了,大神救救我啊

Posted by haha132 at 2013-08-09 10:09:47 on Problem 1185
N=1的情况是对的,楼下大神们给的测试数据(100行的,99行的)也都是对的,无论代码是输入一组数据还是多组数据也都试过,可是就是是wrong answer 纠结啊,哪位大神帮我看看吧,支支招,万分感谢
附上代码
#include<iostream>
using namespace std;
const int Ma=1000;
int jg[101][65][65];
int s[101][63];
int sum[101][63];
int map[101];
int N,M,num;//N代表行M代表列
bool judge(int a,int b)
{
	if( (b & map[a])!=b)
		return false;
	if(b & (b<<1))   return false;
	if(b & (b<<2))   return false;
	return true;
}
int get(int j)
{
	int i=0;
	while(j)
	{
		if((j & 1))
			i++;
		j>>=1;
	}
	return i;
}
bool panduan(int x,int y,int z)
{
	if(x & y) return false;
	if(x & z) return false;
	return true;
}
int main()
{
	while(cin>>N>>M)
	{
	    //cin>>N>>M;
		int i,j,x,y,k;
		memset(map,0,sizeof(map));
		memset(jg,0,sizeof(jg));
		memset(s,0,sizeof(s));
		memset(sum,0,sizeof(sum));
			s[0][0]=s[1][0]=1;
		for(i=2;i<=N+1;i++)
			for(j=1;j<=M;j++)
			{
				char c;cin>>c;
				if(c=='P') k=1;
				else       k=0;
				map[i]=(map[i]<<1)+k;//存储在MAP的2到N+1个中
			}
		
		for(i=2;i<=N+1;i++)
		{
			k=1;
			for(j=0;j<(1<<M);j++)
				if(judge(i,j))
				{
					s[i][k]=j;
					sum[i][k++]=get(j);
				}
			s[i][0]=k-1;
		}
		for(i=2;i<=N+1;i++)
			for(j=1;j<=s[i][0];j++)//s[i][0]表示第i行有多少种状态
				for(x=1;x<=s[i-1][0];x++)
					for(y=1;y<=s[i-2][0];y++)
						if(panduan(s[i][j],s[i-1][x],s[i-2][y]))
						{
							int t=sum[i][j]+jg[i-1][x][y];
							if(t>jg[i][j][x]) jg[i][j][x]=t;
						}
							
		int g=0;
		for(i=1;i<=s[N+1][0];i++)
		for(j=1;j<=s[N][0];j++)
			if(g<jg[N+1][i][j])
				g=jg[N+1][i][j];
			cout<<g<<endl;
	}
	return 0;
}
						





Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator