| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这个我感觉没有这么简单吧?不需要记录分配的模式吗?In Reply To:代码提交失败(如下) ft..... Posted by:ulam at 2005-06-21 16:11:26 > #include <stdio.h>
> void Sort(int* a, int dimension);
> int Evaluate(int capacity, int *a, int dimension);
>
> int main()
> {
> int t;/*处理行数*/
> int s;/*容量 */
> int n;/*每一行元素个数 */
> int i,j;/*循环变量 */
> int a[11][17];
> scanf("%d",&t);
> for (i=0; i<t; i++)
> {
> scanf("%d%d", &s, &n);
> for (j=0; j<n; j++)
> {
> scanf("%d",&a[i][j]);
> }
> Sort(a[i], n);
> if (Evaluate(s,a[i],n)) printf("%s\n","KHOOOOB!");
> else printf("%s\n","HUTUTU!");
> }
> return 0;
> }
>
> void Sort(int* a, int dimension)
> {
> int i,j;/*for loop*/
> int tmp;/*for exchange*/
> for (i=0; i<dimension-1; i++)
> {
> for (j=i+1; j<dimension; j++)
> {
> if (a[i] < a[j]) { tmp=a[i]; a[i]=a[j]; a[j]=tmp;}
> }
> }
> }
>
> int Evaluate(int capacity, int* a, int dimension)
> { int i;/*for loop */
> int flag = 1;/* 设置分配成功的标识 */
> int lengthnow = a[0];/* 定义并初绐化当前方形长度 */
> int capacity_left = capacity*capacity - lengthnow*lengthnow;/*定义并初绐化当前剩余容量 */
> for (i=1; i<dimension; i++)
> {
> if (a[i]==1) capacity_left -= 1;/*1*1格对分配并不影响 */
> /*大于一格的要考虑扩容问题,在当前正方形内可以分配则不扩容 */
> if (a[i]>1 && (a[i]*a[i]>capacity_left + lengthnow*lengthnow - capacity*capacity) )
> { lengthnow += a[i]; capacity_left -= a[i]*a[i];}
> if (lengthnow > capacity) {flag=0; break;}/*分配失败 */
> if (capacity_left < 0) {flag=0; break;}/*分配失败*/
> }
>
> return flag;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator