锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
]]>
]]>
]]>
#include<iostream>
#include<queue>
using namespace std;
int n,h;
int f[30],t[30],d[30];
int best[30],way[30],maxinum,tot,tag=0;
struct node
{
int num;
int fish;
void set(int id,int f)
{
num=id;
fish=f;
}
};
bool operator<(const node a,const node b)
{
if(a.fish==b.fish)
return a.num>b.num;
else
return a.fish<b.fish;
}
priority_queue<node> qu;
node now;
int main()
{
while(scanf("%d",&n)&&n)
{
if(tag)
printf("\n");
cin>>h;
h*=12;
maxinum=-1;
int i,j;
for(i=0;i<n;i++)
{
cin>>f[i];
}
for(i=0;i<n;i++)
{
cin>>d[i];
}
for(i=0;i<n-1;i++)
{
cin>>t[i];
}
///////////鏁版嵁杈撳叆瀹屾瘯錛屽紑濮嬭繘鍏ヨ綆?br> for(i=0;i<n;i++)
{
memset(way,0,sizeof(way));
while(!qu.empty())
qu.pop();
if(i>0)
h-=t[i-1];
tot=0;
for(j=0;j<=i;j++)
{
now.set(j,f[j]);
qu.push(now);
}
for(j=0;j<h;j++)
{
now=qu.top();
qu.pop();
tot+=now.fish;
now.fish-=d[now.num];
if(now.fish<0)
now.fish=0;
way[now.num]+=5;
qu.push(now);
}
if(tot>maxinum)
{
maxinum=tot;
memcpy(best,way,sizeof(way));
}
}
printf("%d",best[0]);
for(i=1;i<n;i++)
printf(", %d",best[i]);
printf("\nNumber of fish expected: %d\n",maxinum);
tag=1;
}
return 0;
}
鍦ㄧ▼搴忚璁′腑榪樻湁涓縐嶆柟娉曞彨鍋?鍥炴函娉?.浠栦笉鏄寜鐓ф煇縐嶅叕寮忔垨紜畾鐨勬硶鍒?姹傞棶棰樼殑瑙?鑰屾槸閫氳繃璇曟帰鍜岀籂姝i敊璇殑絳栫暐,鎵懼埌闂鐨勮.榪欑鏂規硶涓鑸槸浠庝竴涓師濮嬬姸鎬佸嚭鍙?閫氳繃鑻ュ共姝ヨ瘯鎺?鏈鍚庤揪鍒扮洰鏍囩姸鎬佺粓姝?
鍥炴函娉曞湪鐞嗚涓婃潵璇?灝辨槸鍦ㄤ竴媯墊悳绱㈡爲涓粠鏍圭粨鐐瑰嚭鍙?鎵懼埌涓鏉¤揪鍒版弧瓚蟲煇鏉′歡鐨勫瓙緇撶偣鐨勮礬寰?鍦ㄦ悳绱㈣繃紼嬩腑,瀵逛簬姣忎竴涓腑闂寸粨鐐?浠栫殑浣嶇疆浠ュ強鍚戜笅鎼滅儲榪囩▼鏄浉浼肩殑,鍥犳瀹屽叏鍙互鐢ㄩ掑綊鏉ュ鐞?鍏稿瀷鐨勪緥瀛愬氨鏄憲鍚嶇殑"鍏殗鍚庨棶棰?.
"鍏殗鍚庨棶棰?鏄湪鍥介檯璞℃媯嬬洏涓婃斁緗叓涓殗鍚?浣垮ス浠笉鑳界浉鍚?鍥介檯璞℃涓殑鐨囧悗鍙互鍚冩帀涓庡ス澶勪簬鍚屼竴琛?鍚屼竴鍒?鍚屼竴瀵硅綰夸笂鐨勬瀛?鍥犳姣忎竴琛屽彧鑳芥憜鏀句竴涓殗鍚?鍥犲叡鏈夊叓琛?鎵浠ユ瘡琛屾湁涓斿彧鏈変竴涓殗鍚?
鍦ㄦ湰渚嬩腑鐨囧悗鐨勪綅緗湁涓涓竴緇存暟緇勬潵瀛樻斁A(I)=J琛ㄧず絎琁琛岀殗鍚庢斁鍦ㄧJ鍒?涓嬮潰涓昏鏉ョ湅鐪嬫庝箞鏍峰垽鏂殗鍚庢槸鍚﹀畨鍏ㄧ殑闂.(1)棣栧厛,鐢ㄤ竴緇存暟緇勬潵琛ㄧず,宸茬粡瑙e喅浜嗕笉鍦ㄥ悓涓琛岀殑闂.(2)瀵逛簬鍒楀彲浠ュ紩榪涗竴涓爣蹇楁暟緇凜[J],鑻鍒椾笂宸叉斁浜嗙殗鍚?鍒機[J]=FALSE.(3)瀵逛簬宸︿笂鍙充笅鐨勫瑙掔嚎I-J涓轟竴甯擱噺,浣嶄簬[-7,+7]涔嬮棿,鍐嶆寮曞叆鏍囧織鏁扮粍L[-7..7];瀵逛簬宸︿笅鍙充笂鐨勫瑙掔嚎,綾諱技鐨勬湁I+J絳変簬甯擱噺,鐢ㄦ暟緇凴[2..16]鏉ヨ〃紺?褰撳湪絎琁琛?絎琂鍒椾笂鏀劇疆浜嗙殗鍚?鍒欏彧闇璁劇疆:C[J]:=FALSE; L[I-J]:=FLASE; R[I+J]:=FALSE灝卞彲浠ヨВ鍐崇殗鍚庣殑瀹夊叏闂浜?
闂鎻忚堪錛氬湪鏍囧噯鍥介檯璞℃鐨勬鐩樹笂錛?*8鏍鹼級鍑嗗鏀劇疆8鍙殗鍚庯紝鎴戜滑鐭ラ亾錛屽浗闄呰薄媯嬩腑鐨囧悗鐨勫▉鍔涙槸鏈澶х殑錛屽ス鏃㈠彲浠ユí璧扮珫璧幫紝榪樺彲浠ユ枩鐫璧幫紝閬囧埌鎸″湪濂瑰墠榪涜礬綰夸笂鐨勬晫浜猴紝濂瑰氨鍙互鍚冩帀瀵規墜銆傝姹傚湪媯嬬洏涓婂畨鏀?鍙殗鍚庯紝浣垮ス浠郊姝や簰鐩擱兘涓嶈兘鍚冨埌瀵規柟錛屾眰鐨囧悗鐨勬斁娉曘?br>/************************************************************************/
/*銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 */
/*銆銆銆銆闂錛氬湪8×8鐨勫浗闄呰薄媯嬫鐩樹笂鏀劇疆8涓殗鍚庯紝瑕佹眰浠繪剰涓や釜鐨囧悗銆銆銆銆銆銆 */
/*銆銆銆銆銆銆 涓嶈兘鍦ㄥ悓涓琛屻佸悓涓鍒楁垨鍚屼竴鏉″瑙掔嚎涓娿傘銆銆銆銆銆銆銆銆銆銆銆 */
/*銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 */
/*銆銆銆銆鏈▼搴忎嬌鐢ㄩ掑綊錛嶅洖婧硶姹傝В8鐨囧悗闂銆俈isual C++ 6.0 璋冭瘯閫氳繃銆傘銆*/
/*銆銆銆銆浣滆?鏅ㄦ槦銆銆銆銆 2002騫?鏈?鏃ャ銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 */
/*銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 */
/************************************************************************/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define QUEENS 8
//!璁板綍瑙g殑搴忓彿鐨勫叏灞鍙橀噺銆?br>int iCount = 0;
//!璁板綍鐨囧悗鍦ㄥ悇鍒椾笂鐨勬斁緗綅緗殑鍏ㄥ眬鏁扮粍銆?br>int Site[QUEENS];
//!閫掑綊姹傝В鐨勫嚱鏁般?br>void Queen(int n);
//!杈撳嚭涓涓В銆?br>void Output();
//!鍒ゆ柇絎琻涓殗鍚庢斁涓婂幓涔嬪悗錛屾槸鍚︽湁鍐茬獊銆?br>int IsValid(int n);
/*----------------------------Main錛氫富鍑芥暟銆?----------------------------*/
void main()
{
銆銆銆銆 //!浠庣0鍒楀紑濮嬮掑綊璇曟帰銆?br>銆銆銆銆 Queen(0);
銆銆銆銆 //!鎸変換鎰忛敭榪斿洖銆?br>銆銆銆銆 getch();
}
/*-----------------Queen錛氶掑綊鏀劇疆絎琻涓殗鍚庯紝紼嬪簭鐨勬牳蹇?----------------*/
void Queen(int n)
{
銆銆銆銆 int i;
銆銆銆銆 //!鍙傛暟n浠?寮濮嬶紝絳変簬8鏃朵究璇曞嚭浜嗕竴涓В錛屽皢瀹冭緭鍑哄茍鍥炴函銆?br>銆銆銆銆 if(n == QUEENS)
銆銆銆銆 {
銆銆銆銆銆銆銆銆銆銆 Output();
銆銆銆銆銆銆銆銆銆銆 return;
銆銆銆銆 }
銆銆銆銆銆銆
銆銆銆銆 //!n榪樻病鍒?錛屽湪絎琻鍒楃殑鍚勪釜琛屼笂渚濇璇曟帰銆?br>銆銆銆銆 for(i = 1 ; i <= QUEENS ; i++)
銆銆銆銆 {
銆銆銆銆銆銆銆銆銆銆 //!鍦ㄨ鍒楃殑絎琲琛屼笂鏀劇疆鐨囧悗銆?br>銆銆銆銆銆銆銆銆銆銆 Site[n] = i;
銆銆銆銆銆銆銆銆銆銆 //!濡傛灉鏀劇疆娌℃湁鍐茬獊錛屽氨寮濮嬩笅涓鍒楃殑璇曟帰銆?br>銆銆銆銆銆銆銆銆銆銆 if(IsValid(n))
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 Queen(n + 1);
銆銆銆銆 }
}
/*------IsValid錛氬垽鏂n涓殗鍚庢斁涓婂幓涔嬪悗錛屾槸鍚﹀悎娉曪紝鍗蟲槸鍚︽棤鍐茬獊銆?-----*/
int IsValid(int n)
{
銆銆銆銆 int i;
銆銆銆銆 //!灝嗙n涓殗鍚庣殑浣嶇疆渚濇浜庡墠闈錛?涓殗鍚庣殑浣嶇疆姣旇緝銆?br>銆銆銆銆 for(i = 0 ; i < n ; i++)
銆銆銆銆 {
銆銆銆銆銆銆銆銆銆銆 //!涓や釜鐨囧悗鍦ㄥ悓涓琛屼笂錛岃繑鍥?銆?br>銆銆銆銆銆銆銆銆銆銆 if(Site[i] == Site[n])
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 return 0;
銆銆銆銆銆銆銆銆銆銆 //!涓や釜鐨囧悗鍦ㄥ悓涓瀵硅綰夸笂錛岃繑鍥?銆?br>銆銆銆銆銆銆銆銆銆銆 if(abs(Site[i] - Site[n]) == (n - i))
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 return 0;
銆銆銆銆 }
銆銆銆銆 //!娌℃湁鍐茬獊錛岃繑鍥?銆?br>銆銆銆銆 return 1;
}
/*------------Output錛氳緭鍑轟竴涓В錛屽嵆涓縐嶆病鏈夊啿紿佺殑鏀劇疆鏂規銆?-----------*/
void Output()
{
銆銆銆銆 int i;
銆銆銆銆 //!杈撳嚭搴忓彿銆?br>銆銆銆銆 printf("No.%-5d" , ++iCount);
銆銆銆銆 //!渚濇杈撳嚭鍚勪釜鍒椾笂鐨勭殗鍚庣殑浣嶇疆錛屽嵆鎵鍦ㄧ殑琛屾暟銆?br>銆銆銆銆 for(i = 0 ; i < QUEENS ; i++)
銆銆銆銆銆銆銆銆銆銆 printf("%d " , Site[i]);
銆銆銆銆 printf("n");
}
STL婧愪唬鐮?br>鐢ㄤ簡STL, 鏂規硶鏄竴鏍風殑.
#include <iostream>
#include <string>
using namespace std;
void queen(const string t, const string s)
{
銆銆銆銆if (s=="") cout<<t<<endl;
銆銆銆銆else
銆銆銆銆銆銆銆銆for (int i=0; i<s.length(); i++) {
銆銆銆銆銆銆銆銆銆銆銆銆bool safe=true;
銆銆銆銆銆銆銆銆銆銆銆銆for (int j=0;j<t.length();j++) {
銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆if (t.length()-j==abs(s[i]-t[j])) safe=false;
銆銆銆銆銆銆銆銆銆銆銆銆}
銆銆銆銆銆銆銆銆銆銆銆銆if (safe) queen(t+s[i], s.substr(0,i)+s.substr(i+1));
銆銆銆銆}
}
int main()
{
string s="01234567";
銆銆銆銆queen("",s);
銆銆銆銆system("PAUSE");
銆銆銆銆exit(EXIT_SUCCESS);
}
閫掑綊瑙e叓鐨囧悗闂
/*閫掑綊娉曡В鍏殗鍚庨棶棰?/
/*浣滆呴粍鍥界憸錛屻婃暟鎹粨鏋勶紙C璇█鐗堬級銆嬫竻鍗庡ぇ瀛﹀嚭鐗堢ぞ*/
char Chessboard[8][8]; /*澹版槑8錛?鐨勭┖鐧芥鐩?/
int N_Queens(int LocX, int LocY, int Queens) /*閫掑綊*/
{
int i,j;
int Result=0;
if(Queens == 8)/*閫掑綊緇撴潫鏉′歡*/
銆銆 return 1;
else if(QueenPlace(LocX,LocY))/*閫掑綊鎵ц閮ㄥ垎*/
銆銆{
銆銆Chessboard[LocX][LocY] = 'Q';
銆銆for(i=0;i<8;i++)
銆銆銆銆for(j=0;j<8;j++)
銆銆銆銆{
銆銆銆銆Result += N_Queens(i,j,Queens+1);
銆銆銆銆if(Result>0)
銆銆銆銆銆銆break;
銆銆銆銆}
銆銆if(Result>0)
銆銆銆銆return 1;
銆銆else
銆銆銆銆{
銆銆銆銆Chessboard[LocX][LocY] = 'X';
銆銆銆銆}
銆銆}
else
銆銆return 0;
}
int QueenPlace(int LocX,int LocY) /*鍒ゆ柇浼犲叆鍧愭爣鏈韓鍙婂叆鍏釜鏂瑰悜涓婃槸鍚︽湁鐨囧悗*/
{
int i,j;
if(Chessboard[LocX][LocY] != 'X')
銆銆return 0;
for(j=LocY-1;j>=0;j--)
銆銆if(Chessboard[LocX][j] != 'X')
銆銆銆銆return 0;
for(j=LocY+1;j<8;j++)
銆銆if(Chessboard[LocX][j] != 'X')
銆銆銆銆return 0;
for(i=LocX-1;i>=0;i--)
銆銆if(Chessboard[i][LocY] != 'X')
銆銆銆銆return 0;
for(i=LocX+1;i<8;i++)
銆銆if(Chessboard[i][LocY] != 'X')
銆銆銆銆return 0;
i= LocX - 1;
j= LocY - 1;
while (i>=0&&j>=0)
銆銆if(Chessboard[i--][j--] != 'X')
銆銆銆銆return 0;
i= LocX + 1;
j= LocY - 1;
while (i<8&&j>=0)
銆銆if(Chessboard[i++][j--] != 'X')
銆銆銆銆return 0;
i= LocX - 1;
j= LocY + 1;
while (i>=0&&j<8)
銆銆if(Chessboard[i--][j++] != 'X')
銆銆銆銆return 0;
i= LocX + 1;
j= LocY + 1;
while (i<8&&j<8)
銆銆if(Chessboard[i++][j--] != 'X')
銆銆銆銆return 0;
return 1;
}
main() /*涓葷▼搴?/
{
int i,j;
for(i=0;i<8;i++)
銆銆for(j=0;j<8;j++)
銆銆銆銆Chessboard[i][j] = 'X';
N_Queens(0,0,0);
printf("the graph of 8 Queens on the Chessboard.is:n");
for(i=0;i<8;i++)
銆銆for(j=0;j<8;j++)
銆銆{
銆銆if(Chessboard[i][j] == 'Q')
銆銆銆銆printf("(%d,%d)n",i,j);
銆銆}
getch();
}
/*********************************************************
*****************鍏殗鍚庨棶棰?******************************
************鏍規嵁涓ヤ功緇欑殑綾籧綆楁硶姹傚緱************************
*********************************************************/
#include<stdio.h>
#define N 8
int col=1,row=1,slash=1,bslash=1;
int a[N][N];
int p,q,k,l;
int num=0;
void trial(int i)
{
int j;銆銆 /*娉?鎰忥紝榪欓噷鐨刯 涓瀹氳璁句負鍐呴儴鍙橀噺*/
if(i==N)
{
num++;
for(k=0;k<N;k++)
{
for(l=0;l<N;l++)
{
銆銆if(a[k][l]==1)
銆銆 printf("@");
銆銆else printf("*");
}
printf("n");
}
printf("nn");
getchar();
}
else
{
for(j=0;j<N;j++)
{
for(k=0;k<i;k++)
銆銆if(a[k][j]==1)
銆銆{
銆銆 col=0;
銆銆 break;
銆銆}銆銆銆銆 /*鍒?/
p=i-1;
q=j+1;
while((p>=0)&&(q<N))
{
銆銆if(a[p][q]==1)
銆銆{
銆銆 slash=0;
銆銆 break;
銆銆}
銆銆p--;
銆銆q++;
}
p=i-1;
q=j-1; /*瀵硅*/
while((p>=0)&&(q>=0))
{
銆銆if(a[p][q]==1)
銆銆{
銆銆 bslash=0;
銆銆 break;
銆銆}
銆銆p--;
銆銆q--;
}銆銆銆銆銆銆/*鏂滃瑙?/
if((col==1)&&(slash==1)&&(bslash==1)) /*鏉′歡鍒ゆ柇*/
{
銆銆a[i][j]=1;
銆銆trial(i+1);
}
col=1;slash=1;bslash=1;
a[i][j]=0;
}
}
}
void main()
{
trial(0);
printf("%dn",num);
getchar();
}
int len1=strlen(a);
int len2=strlen(b);
if(len1==1&&len2==1&&a[0]=='0'&&b[0]=='0')
{
cout<<"True"<<endl;
break;
}
if(len1>len2)
if(add(a,b))
cout<<"True"<<endl;
else
cout<<"False"<<endl;
else
if(add(b,a))
cout<<"True"<<endl;
else
cout<<"False"<<endl;
}
return 0;
}