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

终于统计完了...

只有不到7个小时睡觉了... 澡还没洗...

工资果然不是白拿的...


女侠,约吗?
2007-06-27 22:56
killer_l
Rank: 2
等 级:新手上路
威 望:3
帖 子:1139
专家分:0
注 册:2007-5-25
收藏
得分:0 
学习中..........

2007-06-28 08:41
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
回家慢慢研究!

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-06-28 11:38
weishj
Rank: 1
等 级:新手上路
威 望:2
帖 子:141
专家分:0
注 册:2007-4-22
收藏
得分:0 

/* 65. ( NOI'94.1_1 ) 键盘输入一个仅由小写字母组成的字符串,输出以该串中任
取M个字母的所有排列及排列总数。*/
#include <iostream>
#define MAXN 100 //输入的字符串的最大长度,可任意改
#define MAX 500 //本程序所支持的最大排列数,可改
using namespace std;
int a[MAXN];
char result[MAX][MAXN];
int x=0,footer=0; //x记录组合数,x和footer作为result的行标和列标
void combin(int m,int n,char *tt); //求得从tt所指字符中选出n个字符的所有组合
int f(int n);
void permute(char*,int,int); //输出已知字符串的全排列
int main()
{
char *tt;
char n[5],data[MAXN];
int m;
cout<<"请输入字符串:"<<endl;
cin>>data;
do
{
cout<<"要取几个字符?(该数字必须小于或者等于"<<strlen(data)<<")"<<endl;
cin>>n;
cin.sync();
cin.clear();
m=strlen(data);
}while(m<atoi(n));
tt=data;
a[0]=atoi(n);
combin(m,atoi(n),tt);
int sum=x*f(a[0]);
cout<<"一共有"<<sum<<"种排列:"<<endl;
for(int i=0;i<x;i++)
permute(result[i],0,atoi(n));
return 0;
}
void combin(int m,int n,char *tt)
{
int i,j;
for (i=m;i>=n;i--)
{
a[n]=i;
if (n>1)
combin(i-1,n-1,tt);
else
{
x++;
for(j=a[0];j>0;j--)
result[x-1][footer++]=*(tt+a[j]-1);
footer=0;
}
}
}
int f(int n)
{
int s=1;
for(int i=1;i<=n;i++)
s*=i;
return s;
}
void permute(char a[],int m,int n)
{
int i;
if(m<n-1)
{
permute(a,m+1,n);
for (i=m+1;i<n;i++)
{
swap(a[m],a[i]);
permute(a,m+1,n);
swap(a[m],a[i]);
}
}
else
cout<<a<<endl;
}

[此贴子已经被作者于2007-6-28 19:47:53编辑过]


If you shed tears when you miss the sun, you also miss the stars.
2007-06-28 19:46
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
收藏
得分:0 
回环```
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
const int n=6;
int a[n][n]={0},i;
a[0][0]=1;
for(int x=0;x<n/2+1;x++)
{
for(i=x;i<n-x;i++)
if(a[x][i]==0)
a[x][i]=a[x][i-1]+1;
for(i=x;i<n-x;i++)
if(a[i][n-x-1]==0)
a[i][n-x-1]=a[i-1][n-x-1]+1;
for(i=n-x-1;i>=x;i--)
if(a[n-x-1][i]==0)
a[n-x-1][i]=a[n-x-1][i+1]+1;
for(i=n-x-1;i>=x+1;i--)
if(a[i][x]==0)
a[i][x]=a[i+1][x]+1;
}
for(int q=0;q<n;q++)
{
cout<<endl;
for(int w=0;w<n;w++)
cout<<setw(5)<<a[q][w];
cout<<endl;
}
cout<<endl;
return 0;
}
自己写着玩的,没想到这还有题目```发上来共享
2007-06-28 20:36
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
收藏
得分:0 
14
#include<iostream>
using namespace std;
int main()
{
const int n=100;
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';
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;cout<<endl;cout<<endl;
for(i=n/2;i<n;i++)
for(j=i;j>0&&a[j-1]!='0';j--)
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}没运行过,没编译器,哪位兄弟拿去编下哈```我只能在网吧上网```

[此贴子已经被作者于2007-7-1 22:08:16编辑过]

2007-06-28 21:07
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
收藏
得分:0 

没去看哪题谁做过,不好意思```

2007-06-28 21:10
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
收藏
得分:0 
老大有没答案.什么时候发布和我说下,看到有几道题让我兴奋了啊```可是能力不行```没编译器让我调试```谢谢版主老大
2007-06-28 21:13
jojo07021
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-6-29
收藏
得分:0 
找到了个学习的好地方! 学习学习!
2007-06-29 11:16
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 

补充118楼第6题(2),对HCL兄蛇型填数的改进,也不知道算不算改进?因为用三目符来代替if了


#include <iostream.h>
#define MAX 5

int main()
{
int sum=0, j=0, t=1, start=0, end=0;
static int array[MAX][MAX];
for(sum = 0; sum < 2*MAX-1; sum++)
{
start = (sum < MAX)?0:sum-(MAX-1); //越过对角线后start和end范围递减
end = (sum < MAX)?sum:(MAX-1);
for(j = start; j <= end; j++)
//(sum%2)控制环绕方向==0和!=0的时候分别向不同的对角方向环绕
//随着j的增加sum-j渐小array[j][sum-j]时行渐大列渐小,
//array[sum-j][j]时相反

(sum%2!=0)?(array[j][sum-j] = t++):(array[sum-j][j] = t++);
}
for(sum = 0; sum < MAX; sum++)
{
for(j = 0; j < MAX; j++)
cout<<array[sum][j]<<'\t';
cout<<endl<<endl;
}

return 0;
}

[此贴子已经被作者于2007-7-3 20:18:37编辑过]


Viva,espana!
2007-06-29 11:49
快速回复:[全民编程]76道高难度C++练习题.含NOI竞赛题.欢迎挑战
数据加载中...
 
   



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

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