zoukankan      html  css  js  c++  java
  • Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort

    链接

    题意:输入n,m,表示一个n行m列的矩阵,每一行数字都是1-m,顺序可能是乱的,每一行可以交换任意2个数的位置,并且可以交换任意2列的所有数 问是否可以使每一行严格递增

    思路:暴力枚举所有可能的列变换 然后在所有可能的情况下求是否存在一种情况可以使每一行最多进行一次交换最后得到严格递增的矩阵

    AC代码:

     1 #include "iostream"
     2 #include "stdio.h"
     3 #include "string.h"
     4 using namespace std;
     5 
     6 int arr[50][50],n,m;
     7 bool fun(int k)
     8 {
     9     int c=0;
    10     for(int i=0; i<m; i++)
    11     {
    12         if(arr[k][i] != i+1)
    13             c++;
    14     }
    15     if(c==0 || c==2)
    16         return 1;
    17     return 0;
    18 }
    19 
    20 int main()
    21 {
    22     int t,r,c,flag,flag0;
    23     while(scanf("%d%d",&n,&m)!=EOF)
    24     {
    25         for(int i=0; i<n; i++)
    26             for(int j=0; j<m; j++)
    27                 cin>>arr[i][j];
    28 
    29         for(int i=0; i<m; i++)
    30         {
    31             for(int j=0; j<m; j++)
    32             {
    33                 if(i>j) continue;
    34                 for(int k=0; k<n; k++)
    35                 {
    36                     t = arr[k][i];
    37                     arr[k][i] = arr[k][j];
    38                     arr[k][j] = t;
    39                 }
    40                 flag=1;
    41                 flag0=0;
    42                 for(int k=0; k<n; k++)
    43                 {
    44                     if(!fun(k))
    45                     {
    46                         flag=0;
    47                         break;
    48                     }
    49                 }
    50                 if(flag)
    51                 {
    52                     flag0=1;
    53                     break;
    54                 }
    55                 for(int k=0; k<n; k++)
    56                 {
    57                     t = arr[k][i];
    58                     arr[k][i] = arr[k][j];
    59                     arr[k][j] = t;
    60                 }
    61             }
    62             if(flag0)
    63                 break;
    64         }
    65         if(flag0)
    66             printf("YES
    ");
    67         else
    68             printf("NO
    ");
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    Selenium生成Report的利器- ExtentReports
    学习使用monkey 测试
    charles 结合mocky 模拟数据
    Vue.use()源码分析且执行后干什么了
    commonjs 与 es6相关Module语法的区别
    vue函数化组件 functional
    html5细线表格制作
    移动端H5页面禁止长按复制和去掉点击时高亮
    javascript生成器
    promise和生成器的结合
  • 原文地址:https://www.cnblogs.com/max88888888/p/5940719.html
Copyright © 2011-2022 走看看