⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zp1482_p.cpp

📁 一个acm题目系统会自动删除debug和release目录
💻 CPP
字号:
//#include <iostream>
//#include <string>
//using namespace std;
//#include <stdio.h>

int pre[3001], now[3001];

int main()
{
	int n, sum = 0, i, j, k, deta = 0, total;
    while (scanf("%d",&n)!=EOF)
	{
		sum = 0;
		total = 0;
	for (i=0; i<n; i++)
	{
		for (j=0; j<n; j++)
			scanf("%d",&now[j]);
		deta = 0;
		for (j=0; j<n; j++)
		{
			if (i == 0)
			{
				if (now[j] == 0 && (j == 0 || j > 0 && now[j - 1] == 1))
				{
					total ++;
					sum ++;
					now[j] = total + 1;
				}
				else if (now[j] == 0 && j > 0 && now[j - 1] != 1)
						now[j] = total + 1;
			}
			else if (i != 0)
			{
				if (now[j] == 0)
				{
					if ((j == 0 || j > 0 && now[j - 1] == 1) && pre[j] == 1)
					{
						total ++;
						sum ++;
						now[j] = total + 1;
					}
					else if ((j == 0 || j > 0 && now[j - 1] == 1) && pre[j] != 1)
						now[j] = pre[j];
					else if (now[j - 1] != 1 && pre[j] == 1)
						now[j] = now[j - 1];
					else if (now[j - 1] != 1 && pre[j] != 1)
					{
						if (now[j - 1] == pre[j])
							now[j] = pre[j];
						else if (now[j - 1] > pre[j])
						{
							sum --;
							now[j] = pre[j];
							for (k=0; k<j; k++)
								if (now[k] == now[j - 1])
									now[k] = now[j];
						}
					
						else
						{
							sum --;
							now[j] = now[j - 1];
							for (k=n - 1; k>=j; k--)
								if (pre[k] == pre[j])
									pre[k] = now[j];
						}
					}
				}
			}
		}
	
		for (j=0; j<n; j++)
			pre[j] = now[j];
	}
    printf("%d\n",sum);
	}
}
//--------------------------------------------------------
/*					else if (j > 0)
					{
						if (now[j - 1] == 1)
						{
							if (pre[j] != 1)
								now[j] = pre[j];
							else
							{
								sum ++;
								now[j] = sum + 1;
							}
						}
						else if (now[j - 1] != 1)
						{
							now[j] = now[j - 1];
							if (now[j] > pre[j] && pre[j] != 1)
							{
								for (k=j; k>=0; k--)
								{
									if (now[k] != 1)
										now[k] = pre[j];
									if (now[k] == 1)
										break;
								}
									sum --;
							}
							else if (now[j] < pre[j] && pre[j] != 1 && pre[j] - now[j] > deta)
							{
								deta = pre[j] - now[j];
								int temp = pre[j];
								for (k=0; k<n; k++)
									if (pre[k] == temp)
										pre[k] = now[j];
								sum --;
							}
						}
					}
				}
			}
		}
		for (k=0; k<n; k++)
			pre[k] = now[k];
	}
*/	//cout << sum << endl;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -