【计算机算法】装箱问题
输入样例:
8
60 70 80 90 30 40 10 20
输出样例:
60 1
70 2
80 3
90 4
30 1
40 5
10 1
20 2
5
代码(C++):
#include <iostream>
using namespace std;
int main(){
int n,i;
int array[1000],box[1000];
cin>>n;
int sum=0;
for(i=0;i<n;i++)
{
cin>>array[i];
box[i]=100;
}
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(array[i]<=box[j])
{
box[j]=box[j]-array[i];
cout<<array[i]<<" "<<j+1<<endl;
if(j+1>=sum){sum=j+1;}
break;
}
}
}
cout<<sum<<endl;
return 0;
}
代码(Java):
import java.util.Scanner;
public class tanxin {
static int box[] = new int[100];
static int need=0;
public static void myprint(int n, int box[], int j) {
if (box[j] - n >=0) {
box[j] = box[j] - n;
need=need>j?need:j;
System.out.println(n + " " + j);
} else {
j++;
myprint(n, box, j);
}
}
public static void main(String[] args) {
int array[] = new int[1000];
int N;
Scanner s = new Scanner(System.in);
N = s.nextInt();
for (int i = 1; i <= N; i++)
array[i] = s.nextInt();
for (int j = 1; j <= N; j++)
box[j] = 100;
for (int i = 1; i <= N; i++)
myprint(array[i],box,1);
System.out.println(need);
s.close();
}
}