Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B
2016-10-09 11:59
435 查看
题意:
给定矩阵。每行可以换1次,可以交换依次列。
思路:
数据很小,暴力交换列,行中不符合要求位置的是否小于二,小于二就YES。否则NO
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
int col,row;
int a[25][25];
int b[25][25];
int c[25][25];
int hang[25];
int change=0;
int solve(int x,int y)
{
for(int i=1;i<=row;i++)
{
int temp=c[i][x];
c[i][x]=c[i][y];
c[i][y]=temp;
}
memset(hang,0,sizeof(hang));
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
if(a[i][j]!=c[i][j])
hang[i]++;
}
}
for(int i=1;i<=row;i++)
if(hang[i]>2)
{
return 0;
}
return 1;
}
int main()
{
cin>>row>>col;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
cin>>a[i][j];
b[i][j]=a[i][j];
}
}
for(int i=1;i<=row;i++)
{
sort(&a[i][1],&a[i][col+1]);
}
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
if(a[i][j]!=b[i][j])
hang[i]++;
}
}
int tt=0;
for(int i=1;i<=row;i++)
if(hang[i]>2)
{
tt=1;
break;
}
if(tt==0)
{
cout<<"YES"<<endl;
return 0;
}
else
{
int g=0;
for(int i=1;i<=col;i++)
{ if(g==1)
break;
for(int j=1;j<=col;j++)
{
for(int k=1;k<=row;k++)
{
for(int m=1;m<=col;m++)
c[k][m]=b[k][m];
}
if(i!=j)
{
g=solve(i,j);
if(g==1)
break;
}
}
}
if(g==0)
cout<<"NO"<<endl;
else
cout<<
4000
"YES"<<endl;
return 0;
}
}
给定矩阵。每行可以换1次,可以交换依次列。
思路:
数据很小,暴力交换列,行中不符合要求位置的是否小于二,小于二就YES。否则NO
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
int col,row;
int a[25][25];
int b[25][25];
int c[25][25];
int hang[25];
int change=0;
int solve(int x,int y)
{
for(int i=1;i<=row;i++)
{
int temp=c[i][x];
c[i][x]=c[i][y];
c[i][y]=temp;
}
memset(hang,0,sizeof(hang));
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
if(a[i][j]!=c[i][j])
hang[i]++;
}
}
for(int i=1;i<=row;i++)
if(hang[i]>2)
{
return 0;
}
return 1;
}
int main()
{
cin>>row>>col;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
cin>>a[i][j];
b[i][j]=a[i][j];
}
}
for(int i=1;i<=row;i++)
{
sort(&a[i][1],&a[i][col+1]);
}
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
if(a[i][j]!=b[i][j])
hang[i]++;
}
}
int tt=0;
for(int i=1;i<=row;i++)
if(hang[i]>2)
{
tt=1;
break;
}
if(tt==0)
{
cout<<"YES"<<endl;
return 0;
}
else
{
int g=0;
for(int i=1;i<=col;i++)
{ if(g==1)
break;
for(int j=1;j<=col;j++)
{
for(int k=1;k<=row;k++)
{
for(int m=1;m<=col;m++)
c[k][m]=b[k][m];
}
if(i!=j)
{
g=solve(i,j);
if(g==1)
break;
}
}
}
if(g==0)
cout<<"NO"<<endl;
else
cout<<
4000
"YES"<<endl;
return 0;
}
}
相关文章推荐
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar 水题
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) -- D. Dense Subsequence (技巧枚举)
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence 暴力
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing 模拟
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort 暴力
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing 数学
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D题
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing
- 【Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) E】 【动态规划+网络流的思想】 Goods transportation
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)A. Checking the Calendar
- Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort(暴力)
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A题
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing
- Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)
- Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)
- Coderforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)