| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 48912 人关注过本帖, 10 人收藏
标题:[全民编程]76道高难度C++练习题.含NOI竞赛题.欢迎挑战
只看楼主 加入收藏
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
收藏
得分:0 

上题分析编码规则: 
“8”(“日”) 拆成“口”和“凵”
其中 “口” 按笔划依次是 1,2,3,7号位;“凵”按笔划依次为 6,5,4号位

运行结果给出:

0 7 3 1 4 9 5 6 8 2
2 8 0 7 3 1 4 9 5 6
2 8 3 7 0 1 4 9 5 6
2 8 4 1 0 7 3 9 5 6
2 8 6 5 9 3 7 0 1 4
2 8 6 5 9 4 1 0 7 3
2 8 6 5 9 4 1 3 7 0
3 7 0 1 4 9 5 6 8 2
4 1 0 7 3 9 5 6 8 2
6 5 9 3 7 0 1 4 8 2
6 5 9 4 1 0 7 3 8 2
6 5 9 4 1 3 7 0 8 2
共有 12 种方法.


Terminated with return code 0
Press any key to continue ...

[此贴子已经被作者于2007-8-23 16:06:24编辑过]


C++学习
2007-08-23 15:51
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
收藏
得分:0 
回复:(野比)[全民编程]76道高难度C++练习题.含NOI竞...

48. 将4个红球,3个白球与3个黄球排成一排,共有多少种排法?


#include <iostream>

#define DIM(x) sizeof((x))/sizeof((x)[0])
using namespace std;

int main()
{
int a[] = {0,0,0,0,1,1,1,2,2,2}; // 0 表示红球,1表示白球,2表示黄球
int s = 1; //数组a初始化也是一种
while (next_permutation(a,a+DIM(a)))
s++;
cout << "共有 " << s << " 种排法。" << endl;
}


输出结果:

共有 4200 种排法。


Terminated with return code 0
Press any key to continue ...

算不算投机

[此贴子已经被作者于2007-8-23 16:24:55编辑过]


C++学习
2007-08-23 16:24
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
收藏
得分:0 
回复:(野比)[全民编程]76道高难度C++练习题.含NOI竞...
原来写了在9页,上次在网吧写的,没编译,现在用编译器运行下,再发上来完整的.
14.(已确定正确):
#include<iostream>
using namespace std;
int main()
{
const int n=20;
int i,j;
char t,a[n];
for(i=0;i<n/2;i++)
{
a[i]='*';
}
for(i=n/2;i<n;i++)
{
a[i]='0';
}
cout<<"原排列为:"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
for(i=n/2;i<n;i++) //利用两个for,原理很简单,我不会把别人的水平看太低,所以不写了。
for(j=i;j>0&&a[j-1]!='0';j--)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
cout<<"\n\n\n交换后排列变为:"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl<<endl;
return 0;
}

[此贴子已经被作者于2007-8-23 20:32:54编辑过]

2007-08-23 20:22
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(blueboy82006)TO HJin:以下是引用HJin在2007...

Thanks for pointing out my mistake.

I still remember a thing happened when I studied in Beijing. I pointed out a mistake in a woman professor's book, she got furious.


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-24 22:49
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(远去的列车)回复:(野比)[全民编程]76道高...
Great algorithm.

I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-24 22:50
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
回复:(HJin)回复:(blueboy82006)TO HJin:以下是...
To HJin:

It's so great and lucky that you did not do that.

[此贴子已经被作者于2007-8-28 21:29:21编辑过]


2007-08-28 21:26
zptk720
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-19
收藏
得分:0 
题目真多,慢慢做来看看

2007-09-02 12:09
xjlsgcjdtc
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-9-4
收藏
得分:0 

路过,写个第二题:

#include<iostream>
using namespace std;

bool check(int a[])
{
if(a[0]==1&&a[1]==0) return false;
if(a[1]==1&&a[2]==1) return false;
if((a[2]==1&&a[3]==0) ||(a[2]==0&&a[3]==1)) return false;
if(a[3]==0&&a[4]==0) return false;
if(a[4]==1&&(a[1]==0||a[3]==0)) return false;
return true;
}
int main()
{
int a[5];
for(a[0]=0;a[0]<2;a[0]++)
{
if(a[1]=1) a[1]=0;
for(a[1]=0;a[1]<2;a[1]++)
{
if(a[2]=1) a[2]=0;
for(a[2]=0;a[2]<2;a[2]++)
{
if(a[3]=1) a[3]=0;
for(a[3]=0;a[3]<2;a[3]++)
{
if(a[4]=1) a[4]=0;
for(a[4]=0;a[4]<2;a[4]++)
{
if(check(a))
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<endl;
}
}
}
}
}
return 0;
}


String me = "program"
2007-09-05 21:08
xjlsgcjdtc
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-9-4
收藏
得分:0 

第三题:


#include<iostream>
#define max 100
using namespace std;

void copy1(int a[],int k,int n)
{
for(int i=k+1;i<=(n-4)/2;i++)
a[i]=a[k];
}
void copy2(int a[],int k,int n)
{
for(int i=k-1;i>(n-4)/2;i--)
a[i]=a[k];
}
int main()
{
int n;
cout<<"输入n的值(n>=4):"<<endl;
cin>>n;
int a[100];
int i,j,k;
for(k=0;k<n;k++) cout<<"T"<<" ";
cout<<endl;
cout<<"T"<<" ";
for(k=0;k<n-2;k++) cout<<"J"<<" ";
cout<<"T"<<endl;
for(i=1;i<=(n-4)/2+1;i++)
{
for(j=1;j<=i;j++)
{
a[j-1]=j;
copy1(a,(j-1),n);
}
for(j=1;j<=i;j++)
{
a[n-4-j]=j;
copy2(a,(n-4-j),n);
}
cout<<"T"<<" "<<"J"<<" ";
for(k=0;k<n-4;k++) cout<<a[k]<<" ";
cout<<"J"<<" "<<"T"<<" ";
cout<<endl;
}
for(i=n-4;i>(n-4)/2+1;i--)
{
for(j=1;j<=i-((n-4)/2+1);j++)
{
a[j-1]=j;
copy1(a,(j-1),n);
}
for(j=1;j<=i-((n-4)/2+1);j++)
{
a[n-4-j]=j;
copy2(a,(n-4-j),n);
}
cout<<"T"<<" "<<"J"<<" ";
for(k=0;k<n-4;k++) cout<<a[k]<<" ";
cout<<"J"<<" "<<"T"<<" ";
cout<<endl;
}
cout<<"T"<<" ";
for(k=0;k<n-2;k++) cout<<"J"<<" ";
cout<<"T"<<endl;
for(k=0;k<n;k++) cout<<"T"<<" ";
cout<<endl;
return 0;
}


String me = "program"
2007-09-05 22:53
qq598369
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-9-5
收藏
得分:0 

#include<iostream.h>
#define N 20
void main()
{ int i,j,k,q;
q=N/2;
char a[N][N];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
a[i][j]='T';
}

for(i=1;i<N-1;i++)
for(j=1;j<N-1;j++)
{
a[i][j]='J';
}
char t,h=2;
t=N-2;

for(k=1;k<=q;k++)
{
for(i=h;i<t;i++)
for(j=h;j<t;j++)
{
a[i][j]=k+48;
}
t--;
h++;}
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
{cout<<a[i][j];
}
cout<<"\n";}

}

2007-09-06 13:05
快速回复:[全民编程]76道高难度C++练习题.含NOI竞赛题.欢迎挑战
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015135 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved