C语言 算法题

Python013

C语言 算法题,第1张

#include<cstdio>

#include<iostream>

#include<string>

#include<algorithm>

#include<cstring>

using namespace std

int data[100000]

int dp[100000]

int num

bool Change(string s)

{

for(int i=0i<s.size()+1)

{

if(s[i]<='9'&&s[i]>='0')

{

int t=0

while(s[i]<='9'&&s[i]>='0')

{

t=t*10+s[i]-'0'

i++

}

data[num++]=t

}

else if(s[i]==' '||i==s.size())

{

i++

continue

}

else{

return false

}

}

return true

}

int main()

{

string s

while(getline(cin,s))

{

num=0

bool flag=Change(s)

if(!flag)

{

cout<<"ERROR"<<endl

continue

}

/* for(int i=0i<numi++)

{

cout<<data[i]<<" "

}*/

memset(dp,0,sizeof(dp))

int sum=0

for(int i=0i<numi++)

{

sum+=data[i]

}

int half=sum/2

// cout<<half<<endl

for(int i=0i<numi++)

{

for(int j=halfj>=data[i]j--)

{

dp[j]=max(dp[j],dp[j-data[i]]+data[i])

}

}

cout<<sum-dp[half]<<" "<<dp[half]<<endl

}

}

按你要求空瓶倒

#include<stdio.h>

int main()

{

  int num[3],numSave,i,j

  printf("请输入3个数:")

  scanf("%d%d%d",&num[0],&num[1],&num[2])

  for(i=0i<3i++)

  {

      for(j=i+1j<3j++)

      {

        if(num[i]>num[j])

        {

            numSave=num[i]

            num[i]=num[j]

            num[j]=numSave

        }

      }

  }

  printf("从小到大排列:%d   %d   %d",num[0],num[1],num[2])

  return 0

}