第一范文网 - 专业文章范例文档资料分享平台

NOIP2012提高组初赛试题

来源:用户分享 时间:2025/12/12 18:29:02 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{

ans=ans+dep*(s1[x]-'A'+1); if(lefts[x]>=0)calc(lefts[x],dep+1); if(rights[x]>=0)calc(rights[x],dep+1); }

void check(int x) {

if(lefts[x]>=0)check(lefts[x]); s3=s3+s1[x];

if(rights[x]>=0)check(rights[x]); }

void dfs(int x,int th) {

if(th==n) { s3=\check(0); if(s3==s2) { ans=0; calc(0,1);

cout<

if(lefts[x]==-1&&rights[x]==-1) {

lefts[x]=th; father[th]=x; dfs(th,th+1);

father[th]=-1; lefts[x]=-1; }

if(rights[x]==-1) {

rights[x]=th; father[th]=x; dfs(th,th+1); father[th]=-1; rights[x]=-1; }

if(father[x]>=0) dfs(father } int main() {

cin>>s1; cin>>s2; n=s1.size() memset(lefts, memset(rights memset(father dfs(0,1); } 输入: ABCDEF BCAEDF

输出:_________

五、完善程序(第1题第2空3分,其余每空2.5分,共计28分)

1.(排列数)输入两个正整数n,m(1≤n≤20,1≤m≤n),在1~n中任取m个数,按字典序从小到大输出所有这样的排列。例如 输入:3 2 输出:1 2

1 3 2 1 2 3 3 1 3 2

#include #include Using namespace std;

Const int SIZE=25;

bool used[SIZE]; int data[SIZE]; int n,m,i,j,k; bool flag;

int main() {

cin>>n>>m;

memset(used,false,sizeof(used)); for(i=1;i<=m;i++) {

data[i]=i; used[i]=true;

} flag=true; while(flag) {

for(i=1;i<=m-1;i++)cout<=1;i--) {

② ; for(j=data[i]+1;j<=n;j++)if(!used[j]) {

used[j]=true; data[i]=③ ; flag=true; break; } if(flag) {

for(k=i+1;k<=m;k++)

for(j=1;j<=④ ;j++)if(!used[j]) {

data[k]=j; used[j]=true; break; } ⑤ ; } }

搜索更多关于: NOIP2012提高组初赛试题 的文档
NOIP2012提高组初赛试题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1qcyx3srzz7s7tv44gmv_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top