1516. 棋盘上的车[组合数学][状态压缩]
生活随笔
收集整理的這篇文章主要介紹了
1516. 棋盘上的车[组合数学][状态压缩]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1516. 棋盤上的車
☆?? 輸入文件:rook.in?? 輸出文件:rook.out???簡單對比
時間限制:1 s?? 內存限制:256 MB
【題目描述】
在n*n(n≤20)的方格棋盤上放置n 個車,求使它們不能互相攻擊的方案總數。
【輸入格式】
一行一個正整數n。
【輸出格式】
一行一個正整數,即方案總數。
【樣例輸入】
3【樣例輸出】
6【來源】
周偉,《狀態壓縮》,引例
?
/* 乘法原理: 第一步有n種決策,第二步有 n-1種決策,…… 第N步有 1種決策 前一步都對后一步產生影響。都對答案有貢獻。 因此,ans=n! */ #include<cstdio> #include<iostream> using namespace std; typedef long long ll; ll n,ans=1; int main(){freopen("rook.in","r",stdin);freopen("rook.out","w",stdout);cin>>n;for(ll i=1;i<=n;i++) ans*=i;cout<<ans; } //f[11111]表示在五行每一行都放車的方案數 #include<cstdio> typedef long long ll; ll n,f[1<<20]; int main(){freopen("rook.in","r",stdin);freopen("rook.out","w",stdout);scanf("%lld",&n);f[0]=1;for(ll i=1;i<(1<<n);i++){for(ll S=i;S;S-=(S&-S)){f[i]+=f[i& ~(S&-S)];}}printf("%lld\n",f[(1<<n)-1]);return 0; }?
轉載于:https://www.cnblogs.com/shenben/p/6545102.html
總結
以上是生活随笔為你收集整理的1516. 棋盘上的车[组合数学][状态压缩]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义Django的admin界面
- 下一篇: sql 连接串