| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5135 人关注过本帖
标题:ACM题集(即时更新)
只看楼主 加入收藏
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
导弹防御系统我原来的要以CTRL+Z结束输入,而且还要多输入一个数字现在红色部分用了crackerwang果真好用
#include "stdio.h"
int main()
{
int max,fa=0,sum,n=0,m,i=0,j,p,pz,k,d[20][2]={0,0},wz[20]; //d[i][0]=20个高度d[i][1]=到当前的数目 wz[顺序号]
// while(EOF!=scanf("%d",&d[n][0]) && n<20)
// d[n++][1]=0;
// n--;
while(j=getchar())
if(j==' ') n++;
else if(j==10) break;
else d[n][0]=d[n][0]*10+(j-'0');
for(i=0;i<=n;i++) //从20个数的开头开始
{
if(d[i][0]==0) continue; //如果当前处是0就代表已经被筛选出来
sum=0; //sum当前个数
fa++; //fa=方案
p=k=0; //k的增长代表递减个数的增长p代表要排除的数
wz[0]=i; //当前方案头一个,存放的是d[]的下标
for(j=i+1;j<=n;j++)
{
if(j<pz && d[j][0]>p && d[j][0]<d[wz[k]][0]) //此处比当前纪录处小且要大与要排除的数
{
if(k>=d[j][1]) //如果当前顺序个数大于比此处纪录的个数,说明可以继续
{
k++; //k纪录着当前顺序的个数
wz[k]=j; //wz[k]纪录着此处的高度数所处数列的下标
d[j][1]=k; //d[j][1]纪录着当前高度在顺序中的位置
}
else j=n;
}
else if(j>pz && d[j][0]>0 && d[j][0]<d[wz[k]][0])
{
if(k>=d[j][1]) //如果当前顺序个数大于比此处纪录的个数,说明可以继续
{
k++; //k纪录着当前顺序的个数
wz[k]=j; //wz[k]纪录着此处的高度数所处数列的下标
d[j][1]=k; //d[j][1]纪录着当前高度在顺序中的位置
}
else j=n;
}
if(j==n) //本次查找到最后一个
{
if(k>sum) sum=k; //纪录本次最多个数
if(k>0) //如果k>0
{
pz=wz[k]; //要排除数的坐标
p=d[pz][0]; //要排除的数
k--; //返回一个找比要排除数大且比返回一个的数小
j=wz[k];
}
else //如果k=0说明本次查找结束
{
if(sum>max) max=sum; //如果本次长度大于max,纪录下本次的
for(k=n,m=sum;k>=0;k--) //从后往前,把筛选出最长的顺序中的高度数找到清0
{
if(d[k][0]>0)
if(d[k][1]==m && m>=0)
{
d[k][0]=0; //把筛选出的最多的高度数都清0
m--;
}
else d[k][1]=0; //把此处标记的个数清0
}
}
}
}
}
printf("%d %d\n",max+1,fa);
return 0;
}

[此贴子已经被作者于2007-4-20 5:03:03编辑过]


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-20 04:20
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
30和31楼时间不够

雁无留踪之意,水无取影之心
2007-04-20 09:42
企鹅
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-7-14
收藏
得分:0 
这里的题目是哪个网站上的啊,应该不是北大的ACM网站
2007-04-20 14:41
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我在我们学校上的OJ上找的,有几百个

雁无留踪之意,水无取影之心
2007-04-20 15:48
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
收藏
得分:0 
高精度去位留最小数
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main()
{
struct str
{
char s[240];
int k;
struct str *next;
}*head,*p,*d;
int n,m,i=1,j;
while(i)
{
p=(struct str*)malloc(sizeof(struct str));
if(scanf("%s",p->s)==EOF)break;
if(scanf("%d",&p->k)==EOF)break;
if(p->k > strlen(p->s))
{
free(p);
continue;
}
else if(p->k==strlen(p->s))
p->k=-1;
if(i==1)
{
head=d=p;
i++;
}
d->next=p;
p->next=0;
d=p;
}
while(head)
{
if(head->k==-1)
{
printf("0\n");
head=head->next;
continue;
}
m=strlen(head->s);
if(m==1)
{
printf("%c",head->k==0 ? head->s[0] : '0');
head=head->next;
continue;
}
n=1;
for(i=0;head->k && n<m;)
{
if(head->s[i]=='0' || head->s[i]=='-')
{
i++;
if(i==n)n++;
continue;
}
if(head->s[i]>head->s[n])
{
head->s[i]='-';
head->k--;
if(head->k==0)break;
if(i==0)
{
i++;
if(i==n)n++;
}
else
{
j=i;
while(head->s[i]=='-' && i>0)i--;
for(n=i+1;head->s[n]=='-';n++);
}
}
else if(head->s[n]>head->s[i])
{
if(head->k==1)
{
head->s[n]='-';
head->k--;
break;
}
if(n!=m-1)i=n;
if(n<m-1)n++;
else break;
}
else
if(n<m-1)n++;
else if(i==n && n==m-1)break;
}
m=m-head->k;
for(i=0;m--;i++)
if(head->s[i]!='-')printf("%c",head->s[i]);
head=head->next;
printf("\n");
}
return 0;
}

[此贴子已经被作者于2007-4-22 0:50:48编辑过]


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-04-20 16:46
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
LZ我想和你说你一下 做ACM关键不是程序,而是思想,我想你写上自己的思想原比写上自己的程序能让大家明白的更快

很高兴能和大家一起学习程序! QQ:114109098
2007-04-20 16:54
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我发这些是给大家自己锻炼的,不是告诉大家怎么做那两个题目的答案是最开始发上去的,我以后不发了,只是觉得比较简单就发了

雁无留踪之意,水无取影之心
2007-04-20 17:03
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 

看明白别人的代码就明白了别人的思想


2007-04-20 17:04
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 

...

[此贴子已经被作者于2007-4-20 17:42:51编辑过]


很高兴能和大家一起学习程序! QQ:114109098
2007-04-20 17:11
颉颃
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-4
收藏
得分:0 
回复:(我不是郭靖)支持!!!!!
谢谢分享
2007-04-20 18:18
快速回复:ACM题集(即时更新)
数据加载中...
 
   



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

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