您当前的位置: 首页 > 

minato_yukina

暂无认证

  • 2浏览

    0关注

    138博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

紫书第三章例题3-4 uva340

minato_yukina 发布时间:2020-11-16 23:04:07 ,浏览量:2

uva340 统计正确位置(A)的数字很简单,扫一遍两个数组判断是否匹配即可。统计出现过的数字但位置不对的数字数目从正面推比较难。

可以这么思考:出现过的数字但位置不对的数字数目=总数-正确位置数字的总数(A)

那么,只要求出所有所谓所有数字的“总数”即可。那么总数又是什么,我认为是上下相同数字的匹配数,如下面 1有2个匹配数,5有1个匹配数(1与1匹配,5与5匹配,无论位置是否正确),如果位置正确,

那它会被加到正确位置数字的总数上,不正确的,我们通过上面的减法求出.通过上面的观察我们大致知道(?)匹配数=总数=min(上下两个序列中该数字出现的次数)

比如 正确 序列: 1 1 5 5 5

猜想 序列:         1 2 5 1 1   这里1匹配数有2,正确的有1个。(A=1,总数=2)

                                                    2匹配数没有(上下没有同事含2)(A=1,总数=2)

                                                   5匹配数有1,正确的有1个(A=1+1,总数=2+1)

所以这个猜想是 (2,1) 其中A=2,错的(1)=总数(3)-正确的(2) 

 

最后代码... 

#include
#include
#include
using namespace std;
int main(){ int i,j,k,n,flag=0;int booka[15],bookb[15];int ans[10000],b[10000];
while(scanf("%d",&n)!=EOF&&n!=0){    memset(booka,0,sizeof(booka)); memset(bookb,0,sizeof(bookb));
	for(i=1;i>ans[i];
	}
	for(i=1;i            
关注
打赏
1663570241
查看更多评论
0.0392s