题目不难,还是自己懂得代码太少,纯粹凭思维解题。。努力学吧。。

Game Prediction

Suppose there are M people, including you, playing a special card game. At the beginning, each player receives N cards. The pip of a card is a positive integer which is at most N*M. And there are no two cards with the same pip. During a round, each player chooses one card to compare with others. The player whose card with the biggest pip wins the round, and then the next round begins. After N rounds, when all the cards of each player have been chosen, the player who has won the most rounds is the winner of the game. 
Given your cards received at the beginning, write a program to tell the maximal number of rounds that you may at least win during the whole game.

Input

The input consists of several test cases. The first line of each case contains two integers m (2 <= m <= 20) and n (1 <= n <= 50), representing the number of players and the number of cards each player receives at the beginning of the game, respectively. This followed by a line with n positive integers, representing the pips of cards you received at the beginning. Then a blank line follows to separate the cases.

The input is terminated by a line with two zeros.

Output

For each test case, output a line consisting of the test case number followed by the number of rounds you will at least win during the game.

Sample Input

2 5

1 7 2 10 9

6 11 62 63 54 66 65 61 57 56 50 53 48

0 0

Case 1: 2

Case 2: 4

下面是过的代码

#include<stdio.h>
main()
{
int i,m,n,g,k,t,sum,num;
int x[1060];
int z[1060];
num=1;
while(scanf("%d %d",&m,&n)!=EOF)
{if(m==0&&n==0) break;sum=0;
for(i=1;i<=m*n;i++)
{z[i]=i;}
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
m=m*n;
for(i=1;i<=n;i++)
for(g=1;g<=m;g++)
{
if(x[i]==z[g])
z[g]=1080;
}
for(i=1;i<n;i++)
for(g=i+1;g<=n;g++)
{if(x[i]<x[g])
{t=x[i];x[i]=x[g];x[g]=t;}
}
for(g=m;g>0;g--)
for(i=1;i<=n;i++)
{
if(z[g]>x[i]&&z[g]!=1080)
{x[i]=2000;
break;}
}
for(i=1;i<=n;i++)
{
if(x[i]!=2000)
sum++;
}
printf("Case %d: %d\n",num,sum);
num++;
}
}

感觉自己写的很幼稚,完全没有算法的美。完全凭思维写,就是按照人脑的步骤复制给程序,非常低级的感觉。。。。。

前面错的代码也附上:

原本是想倒序排列一下全部的在比较,一样的就+1不一样就给0

#include<stdio.h>
#include<string.h>
main()
{
int i,m,n,g,k,t,sum,num;
int x[1060];
int z[1060];
num=1;
while(scanf("%d %d",&m,&n)!=EOF)
{if(m==0&&n==0) break;
memset(z,0,sizeof(z));
sum=0;
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
for(i=1;i<n;i++)
for(g=i+1;g<=n;g++)
{if(x[i]<x[g])
{t=x[i];x[i]=x[g];x[g]=t;}
}
m=m*n;
for(i=1;i<=n;i++)
{
if(z[i]==0&&x[i]==m)
{
    sum++;
    z[m]=1;
}
else if(z[i]==0&&x[i]<m)
{
    t=x[i];z[t]=1;z[m]=1;m--;
}
m--;
}
printf("Case %d: %d\n",num,sum);
num++;
}
}
时间: 2024-11-06 22:14:14

题目不难,还是自己懂得代码太少,纯粹凭思维解题。。努力学吧。。的相关文章

想得太多,做的太少

2012年来到了天津,开始了了四年的大学之旅.选了一个折中的专业,其中包含计算机的大专业.当然大二分专业的时候选了计算机专业.大学四年学计算机的时间比我预想的时间要少,不过还是有很多的时间"浪费"在了计算机上面.对于计算机的学习,随着学习一步步的深入,才发现自己是一个对于计算机什么都不懂得门外汉.但是还是想把时间浪费在这些上面.和计算机交流很简单,我的理解就是如果你做的正确,计算机会给你一个正确的反应.如果错误,会有一个错误的警告.把事情想得很简单,这也就是为什么好多程序员不太善于表达

【原创】我对IE了解得还是太少了

一个小问题引发的血案 最近又开始接触一些PC端需要兼容IE的业务需求了,几段代码写下来,才发现我对IE了解还是太少了.做了个老虎机抽奖的需求,需要对中奖结果区分显示,简单可以描述为这样:三个滚轮,每个可能产生三种图标,若用户中奖,则三个滚轮显示结果完全相同,否则三个滚轮显示结果不能完全相同. 于是,我开始设计了以下算法: var isWin = (json.result && json.winner), // json抽奖接口返回结果 rs = [], str = '123', num =

你见过最大的Python项目是多大?十万行的你见过?还说代码量少?

上表已经按代码行数排了序.有意思的一点是, 代码规模最大的前4名中除了 CPython 之外其他三个全部是运维性质的项目,本来我猜测代码应该比较多的项目比如 Odoo 排名反而很靠后.我对运维项目了解有限,不太清楚为什么这些项目的代码规模会名列前茅,或许是因为要支持的内容比较多而杂? 本次统计中纯 Python 代码量最大的 Sentry 几乎达到了 70W 行,这是相当有规模的项目了.30W~50W 行代码的项目有三个,包括基础项目 CPython 在内.20W 和 10W 行代码规模的分别有

全球化让大部分人受益,但是对少受损的人的帮助太少。《反全球化,特朗普崛起的土壤》。4星

<经济学人>的电子刊物<商论>的节选文章.基本都是8-10月刊上的,时效性还比较强.文章基本的特点是言简意赅,基本是观点的概括,没有特别详细的阐述. 本书基本的观点是:全球化对大部分人有益,但是发达国家确实有一些工人受损,目前政府对他们的帮助太少,另外发达国家的一些中产阶级在过去10多年来的收入几乎没有增长. 以下是书中一些信息的摘抄: 1:美国选民用选票表达了对体制的不信任与愤怒,因为他们认为这样的体制只会让一小批精英受益.#26 2:低收入人群的收入花在进口商品上的比例要远大于

你迷茫的原因在于读书太少而想的太多!!!

你迷茫的原因在于读书太少而想的太多 如果你也是觉得迷茫 一位正在读高一的在校学生通过新浪微博找到我,私信里跟我说他看了我的文章,觉得挺触动的,他还说他现在很迷茫,想让我帮帮他. 文章来源网络 我给他的回复并不算多,但是依然表达了感谢,并且给他提供了自己当初的方法:当我坚持不下去的时候,就想一想最亲或者是最爱的人,他们在时时刻刻偷偷注视着我,我不能让他们失望.其实说实话,我当年读高中的时候并没有他所描述得那般迷茫,只是到了大学才一发不可收拾的,所以坦白说我并没有这方面的经验,也不知道这样的方法是否

运动想象数据集样本太少,SAE训练过拟合严重

Before Finetuning Train Accuracy: 51.190% After Finetuning Train Accuracy: 100.000% Before Finetuning Test Accuracy: 46.429% After Finetuning Test Accuracy: 50.893% 来自为知笔记(Wiz)运动想象数据集样本太少,SAE训练过拟合严重

它全身都是宝,比人参还有用,可惜知道的人太少

它全身都是宝,比人参还有用,可惜知道的人太少 2016-04-24 都市报道扩大版  红薯叶的秘密 ★能够预防贫血 红薯叶里富含人体所需的铁以及维生素A,C,E,每天吃一点就能预防贫血症状. ★能够预防高血压 富含丰富的钾,有助于控制血压,预防高血压. ★能够促进乳汁分泌 就像猪脚汤.鲫鱼汤一样,它能够很好地帮助孕妇促进乳汁分泌,是很好的催乳健康食品. ★能够排解毒素 富含丰富的叶绿素,能够很好的净化人体血液,排出毒素. ★能够改善便秘 它含有丰富的膳食纤维,可以帮助肠胃蠕动,有利于预防"便秘及

《不是世界不好,而是你见得太少》读后感

上图,故事背景:看到知乎某辣酱贴,瞬间又勾起了自己对于辣酱的追求,然后照那帖子买了不少辣酱,一一品尝.发现,居然还是熟悉的老干妈最好.而其他的很多辣酱,由于每个人的喜好不同,别人认为好吃的,你不一定觉得好吃.当然那帖子,可能软广特别多.而且最打击的,就是,在淘宝上买了不少.发现,居然楼下的小超市,居然都有.价格还更便宜,动摇了我对淘宝的信仰.不能太宅不能太宅.之后自己也分析出,为什么老干妈能卖的那么火,辣酱是一种很私人的东西,不能和别人分享.所以一段时间偃旗息鼓,不买辣酱了.额 或者说是 不追求

想的太多,做的太少

不管在什么地方工作,请记住: 工作不养闲人,团队不养懒人,入一行,先别惦记着赚钱,先学会如何让自己变的值钱. 赚不到钱赚知识,赚不到知识赚经理,赚不到经历赚阅历. 以上说那个都赚到了也就不可能赚不到钱了, 只有先改变自己的态度,才能改变自己的人生的高度 让一个人迷茫的原因只有一个,那就是本该拼搏的年纪,想的太多,做的太少