zoukankan      html  css  js  c++  java
  • crazy rows

    1,下三角矩阵我佛了。。

    2,给定一个0和1组成的矩阵。只允许交换相邻两行,最少需要多少次交换,能得到一个

    下三角矩阵。

    3,什么是下三角矩阵?

    主对角线上方的全是0就是下三角矩阵。

     4,最开始想的肯定是暴力。。所有的n!种交换方案。

    但是暴力肯定过不了大数据的。

    5,当我们看不怎么懂文字解释时,

    去找网上容易懂的文字解释。

    大概知道是用贪心的。。但是具体还是不咋懂。

    那就直接上代码。来代码模拟。

    我终于模拟了一遍并且大致懂啥意思了。

    6,

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m[1005][1005],a[1005];
    int main(){
    cin>>n;
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    cin>>m[i][j];
    int res=0;
    for(int i=0;i<n;i++)
    {
    a[i]=-1;
    for(int j=0;j<n;j++)
    {
    if(m[i][j]==1) a[i]=j;
    }
    }
    //这一部分是用来存矩阵的。只存每行最后一个1就行。

    //但我看了实际上就是个遍历
    for(int i=0;i<n;i++)
    {
    int pos=-1;
    for(int j=i;j<n;j++)
    {
    if(a[j]<=i)
    {
    pos=j;
    break;
    }

    //看哪一行能够满足换到第一行的条件。

    //这块还是用了一点这个什么下三角矩阵的性质的。
    }
    for(int j=pos;j>i;j--)
    {
    swap(a[j],a[j-1]);
    res++;
    }
    }
    //这个东西嘛,就是用来确定要移动到第i行的是pos行。
    cout<<res<<endl;
    }

    7,继续把。

    8,我起码每次看见个题得思考个10来分钟吧。。。

    9,费大和费小,

    费大,就是给你一个一定可以变成下三角矩阵的矩阵,问你最少需要几步这个矩阵可以变成下三角矩阵。(只能相邻行交换)

    要注意a[i]这个数组用的很不错。直接很是简化了问题。(每行交换的东西)

    但是这个思维转化嘛。。我先确定第一行,再确定第二行,再确定第三行。。人家说是贪心。。我嘛。就那样吧。

    你懂个锤子。

    费小吧。

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m[1005][1005],a[1005],res=0; 
    int main(){
        cin>>n;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                cin>>m[i][j];
        for(int i=0;i<n;i++)
        {
            a[i]=-5;
            for(int j=0;j<n;j++)
            if(m[i][j]==1) a[i]=j;
        }
        for(int i=0;i<n;i++)
        {
            int pos=-5;
            for(int j=i;j<n;j++)
            {
                if(a[j]<=i)
                {
                    pos=j;
                    break;
                }
            }
         
            for(int j=pos;j>i;j--)
            {
                swap(a[j],a[j--]);
                res+=1;
            }
        }
        cout<<res<<endl;
    }

    反正我改了。。

  • 相关阅读:
    SQLalchemy 字段类型
    爬虫学习
    Linux了解一下
    django-rest-framework
    vue相关理论知识
    Django认证系统
    Form组件
    JS之AJAX
    Django之中间件
    Django之ORM
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12255519.html
Copyright © 2011-2022 走看看