程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVALive 4255 Guess

UVALive 4255 Guess

編輯:C++入門知識

UVALive 4255 Guess


題意:

給你半個矩陣 如果(i,j)的位置是'-' 則說明sum[i...j]<0 如果是'+' 說明sum>0 如果是'0' 說明sum=0 給出一種滿足這個矩陣的序列 序列元素絕對值在10以內

思路:

很容易想到的是將sum[i...j]轉化為sum[j]-sum[i-1] 即用前綴和來表示 那麼題中的矩陣就可以轉化成前綴和之間的大小比較 也就是說 我們可以通過將前綴和當成點 將大小關系作為邊 求出滿足題意的前綴和的拓撲序 那麼只需要讓拓撲序大的比小的大1 即可很容易的控制元素的絕對值

代碼:

#include
#include
#include
using namespace std;
#define N 15

int T,n;
int in[N],sum[N],vis[N],qu[N],maz[N][N];
char str[N*N];

void topo()
{
    int i,j,k,s,f;
    for(i=0,k=0,f=10;i<=n;k=0,f--)
    {
        for(j=0;j<=n;j++)
        {
            if(!vis[j]&&!in[j]) qu[k++]=j;
        }
        i+=k;
        for(j=0,s=k;j

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved