日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

NOIP信息奥赛--1995“同创杯”初中复赛题题解(五)

發(fā)布時(shí)間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOIP信息奥赛--1995“同创杯”初中复赛题题解(五) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

NOI’95 “同創(chuàng)杯”全國(guó)青少年信息學(xué)(計(jì)算機(jī))奧林匹克競(jìng)賽
分區(qū)聯(lián)賽復(fù)賽測(cè)試數(shù)據(jù)(初中組)

第五題

設(shè)在一排上有N個(gè)格子(N≤20),若在格子中放置有不同顏色的燈,每種燈的個(gè)數(shù)記為N1,N2,……Nk(k表示不同顏色燈的個(gè)數(shù))。(顏色數(shù)<4)
放燈時(shí)要遵守下列規(guī)則:
①同一種顏色的燈不能分開(kāi);
②不同顏色的燈之間至少要有一個(gè)空位置。
例如:N=8(格子數(shù))
R=2(紅燈數(shù))
B=3(藍(lán)燈數(shù))
放置的方法有: R-B順序,B-R順序, 放置的總數(shù)為12種。

程序要求:求出排列方案總數(shù)。

Input

數(shù)據(jù)輸入的方式為:
N
P1(顏色,為一個(gè)字母) N1(燈的數(shù)量)
P2 N2
……
Q(結(jié)束標(biāo)記,Q本身不是燈的顏色)

Output

排列方案總數(shù)

Sample Input
8
R 2
B 3
Q
Sample Output
12

解析:
首先可以將同種顏色的燈的個(gè)數(shù)化為1個(gè),即n-m+1,燈顏色種數(shù)為m;

那么燈之間一定有m-1個(gè)空格且每個(gè)燈占用一個(gè)空格,則剩下s=n-2*m+1個(gè)空格;

而燈旁邊有m+1個(gè)間隙;

可以考慮為s個(gè)空格插在m+1個(gè)間隙中,一個(gè)間隙可以插入0,1個(gè)或多個(gè)空格,那么可以用DFS來(lái)遍歷間隙即可

綜上:可將上面的問(wèn)題就歸結(jié)為這樣一個(gè)數(shù)學(xué)模型:

將同一種顏色的燈歸到一起,看成一個(gè);
dfs出一種顏色順序下的所有順序;
再將它乘上N種顏色的排列數(shù)N!;
即可得到總排列數(shù)。。。。

本題的難點(diǎn)在于DFS的理解和運(yùn)用上。

代碼參考如下:

#include<iostream> using namespace std;int n,m,ans;void DFS(int k,int sum); int main() {while(cin>>n){ans=m=0;char c;int x;while(cin>>c&&c!='Q'){cin>>x;n-=x-1; ++m;cout<< "the total n is: "<<n<<endl;}int s=n-2*m+1,p=1;cout<<"the empty place is: "<<s<<endl;cout<<"the lamp has types is: "<<m<<endl;for(int i=1;i<=m;++i)p*=i; //m個(gè)種類的燈的全排列m+=1;DFS(1,s); //深度遍歷求得m+1個(gè)間隙中插入最多S個(gè)空格的方案數(shù)ans*=p;cout<<ans<<endl;}return 0; }void DFS(int k,int sum) {cout<<"the k is :"<<k<<endl;if(k==m||!sum){++ans;cout<<"the ans is:"<<ans<<endl;return;}for(int i=0;i<=sum;++i){DFS(k+1,sum-i);cout<<"the i is:"<<i<<endl;} }

ps:

DFS:深度優(yōu)先搜索算法,是一種暴力搜索。該模型的理解相對(duì)有一些困難,算法的學(xué)習(xí)本身就比較抽象,結(jié)合典型的實(shí)例來(lái)幫助理解,這樣有助于事半功倍。

總結(jié)

以上是生活随笔為你收集整理的NOIP信息奥赛--1995“同创杯”初中复赛题题解(五)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。