/*1092*/ floyd(拼的對麼。。。。) 就是算環的最大長度能否到1啦~
#include
#include
#include
#include
using namespace std;
char a[1000][100];
double b[100][100];
char q[100],w[100];
int m;
int qqq()
//if(flag==0) break;
}//if(flag==0) break;
}for(i=0;i1) flag=0;
printf("case %d:",t++);
if(flag==0)
else printf(" no\n");
}return 0;
}不能將b[1][1]初始化為1,,,,,,不然會錯。。。。。。不知道為什麼????
/*1234*/
找到最優的筷子組合
首先,,,,ab必然是連續的(如果不連續肯定有連續的更優解),dp[i][j]表示從i到n的筷子中找到j對(a與b)最小的值。。。。
#include
#include
#include
#include
using namespace std;
int a[5001];
int ans[5001][1001];
int main()
for(i=1;i<=dui;i++)
for(i=dui-2;i>=0;i--)}}
printf("%d\n",ans[1][k]);
}return 0;
}double會超
zoj1520
覺得像是揹包吧,,,盡量往第乙個裡面裝,,,,,然後看剩下的能不能裝到另外乙個裡面。。。。。。。。
難點是列印路徑不太會啊= =
#include
#include
#include
#include
using namespace std;
int main()
int aaa=0;
for(i=0;i=a[i];j--)
}return 0;
}列印路徑看下的吧,,,,,,,,
zoj4011 動態規劃
給定乙個n,m,要求乙個m為長度,並且從第一項起有b i 1 b i 0的數列,求出組合個數 1 b i n 利用dp來做,陣列dp i j 表示在長度為i時,以j為結尾的數列,邊界條件為dp 1 i 1,因為當長度為1時,以i為結尾的數列只有乙個。轉移方程為dp i k d i k dp i 1 ...
ZOJ1093 動態規劃
給你n磚,有三個長寬高。每乙個無限制的訪問。疊加在乙個條件的長度和寬度必須嚴格格長度和寬度大於下面的乙個,疊加求最大高度。思維 每塊磚終於放置在根據本方法可以把六種,然後,對於長度和寬度排序。這是lis的變化的問題 include include include include include in...
簡單的動態規劃思想
原題 題解 這道題完全不需要貪心。引理 1 紙牌一定可以分到一樣多。題目條件 2 相鄰兩堆牌間最多隻會移動紙牌一次。最優方案 每次移動可以看作相鄰兩堆中左邊一堆i往右邊一堆i 1移動x張 1 x 0 左往右移動1次 2 x 0 右往左移動1次 3 x 0 不移動。當且僅當此時牌堆1 i總牌數為i 總...