進站編程
⑴ VB優化編程問題
1.標志符名稱
2.注釋
3.空行
其他元素,如變數、窗體和過程,確實要佔用內存的一部分空間,最好將它們精簡以使效率更高。當應用程序作為一個.exe文件運行時,有幾項技術可用於縮小應用程序所需內存。以下技術可縮小代碼大小:
1.減小載入窗體數目
2.減小控制項數目
3.用標簽代替文本框
4.保持數據在磁碟文件和資源中,並且只在最需要時才載入
5.組織模塊
6.考慮替換Variant數據類型
7.使用動態數組,並在刪除時回收內存空間
8.消除死代碼和無用的變數
9.回收被字元串和對象變數用過的空間
一、每一個載入的窗體,無論是與否,都要佔用一定數量的內存(其數量隨著窗體上控制項的類型和數量,以及窗體上點陣圖的大小等不同而有所改變)。所以,為了節約內存,我們只在需要時才載入窗體,不需要時卸載窗體(而不是隱藏窗體)。記住:任何對窗體的引用,和對用New聲明的窗體變數的引用,都會導致VB載入該窗體。
當使用Unload方法卸載窗體時,只能卸載釋放掉部分窗體所佔的空間。若想釋放所有空間,可用關鍵字Nothing使窗體的引用無效,如:Set From=Nothing
二、設計應用程序時,窗體應盡量少用控制項。實際的限製取決於控制項的類型和系統。實際上,含有大量控制項的窗體將運行緩慢。一項與之相關的技術就是:在設計時,盡可能使用控制項數組,而不是在窗體上放置大量同類型的控制項。
三、標簽控制項佔用的Windows資源比文本框少,因此,在可能的情況下,應使用標簽代替文本框。通過適當設置BackColor和BorderStyle的屬性,可以使標簽看起來像文本框,雖說這會需要更多的代碼,但對於含有大量文本域的窗體,它可以大大地減少資源的使用。
⑵ 用C++編程
#include<stdio.h>
#include<iostream>
#include<stack>
using namespace std;
int main()
{
bool islegal=true;
stack<char> a; //棧
char s[100];
gets(s);
for(int i=0;s[i];i++)
{
switch(s[i])
{
case '(':
case '[':
case '{': a.push(s[i]); break; //入棧
case ')': if(a.top()!='(') {islegal = false ; break; } //棧頂元素不匹配,非法
else {a.pop(); break;}//匹配,棧頂元素出棧
case ']': if(a.top()!='[') {islegal = false ; break; }
else {a.pop(); break;}
case '}': if(a.top()!='{') {islegal = false ; break; }
else {a.pop(); break;}
}
if(!islegal) break;//非法退出
}
if(islegal&&a.empty()) cout<<s<<" is a legal string "<<endl;
else cout<<s<<" is an illegal string "<<endl;
system("pause");
return 0;
}
⑶ 去火車站見女友為列有票才能進站,刀具長度小於5才能上車用編程語言怎麼寫
if(有票&&刀具.長度<5)
{進站}
⑷ 車皮編程問題
OK, 按照你說的堆棧結構,
那麼就是5種調度結果。加上一種沒有調度的排序1,2,3. 其實它也可以看作是一種調度結果。1進入調度室,又出來;2進入,又出來;3進入又出來。
這個應該是P(3, 3)。基本的數學問題,記得中學好像學過。
你的問題是什麼?
是不是想問這個調度站對於長度為n的,能夠產生多少種調度結果么?
===============================================================
3 1 2這個結果是不可能的。 所以結果不是簡單的P(3,3)這樣的排列組合問題。
應該是OK了,費我不少時間,你試試吧。程序很多地方寫得不夠好,湊合用吧。不想費時間去改進了。
不過我沒有刪除重復的結果。還需要你自己改進一下,小case。
#define MAX_TRAIN_LEN 100
//#define PRINT_DUMP /* enable this macro to print all detail of scheling */
typedef enum {
GO_OUT_STATION = 0,
GO_IN_STATION,
GO_PASS_STATION
} Action;
static char *action_name[] = {
"go out of station",
"go in station",
"go pass station"
};
int train_len;
int schele_num;
void
printSchele(int pass_train[], int pass_num)
{
int i;
printf("----- got a schele: ");
for (i = 0; i < pass_num; i++)
printf("%d, ", pass_train[i]);
printf("\n");
}
char *
getActionName(Action act)
{
return action_name[act];
}
void
printTrain(char *name, int train[], int begin, int end)
{
int i;
#ifdef PRINT_DUMP
printf("%-20s: ", name);
for (i = begin; i < end; i++)
printf("%d, ", train[i]);
printf("\n");
#else
return;
#endif
}
void
printTrainNum(Action act, int unsched_num, int station_num, int pass_num)
{
#ifdef PRINT_DUMP
printf("%-30s\n (unsched_num: %d, station_num: %d, pass_num: %d)\n", getActionName(act), unsched_num, station_num, pass_num);
#else
return;
#endif
}
void
printRestoreDump()
{
#ifdef PRINT_DUMP
printf("restoring...\n");
#else
return;
#endif
}
/*
Parameters:
int unsched_train[MAX_TRAIN_LEN]; un-scheled train
int unsched_num; un-scheled train number. This is the index
of un-scheled train number. So the
un-scheled trains are in range:
[unsched_num, train_len-1].
int station_train[MAX_TRAIN_LEN]; train in station
int station_num; train number in station, station trains are
in range: [0, station_num-1]
int pass_train[MAX_TRAIN_LEN]; passed train
int pass_num; train number passed already, pass trains are
in range: [0, pass_num-1]
Action act current action
*/
/*
* Three possible action:
* 1) pass directly
* 2) go into scheling station
* 3) if scheling station has any train, go out of station
*/
void
schele(int unsched_train[], int unsched_num, int station_train[], int station_num, int pass_train[], int pass_num, Action act)
{
if (act == GO_OUT_STATION) {
pass_train[pass_num++] = station_train[--station_num];
//printf("%d\n", pass_train[0]);
printTrainNum(act, unsched_num, station_num, pass_num);
printTrain("unsched", unsched_train, unsched_num, train_len);
printTrain("station", station_train, 0, station_num);
printTrain("pass", pass_train, 0, pass_num);
} else if (act == GO_IN_STATION) {
station_train[station_num++] = unsched_train[unsched_num++];
printTrainNum(act, unsched_num, station_num, pass_num);
printTrain("unsched", unsched_train, unsched_num, train_len);
printTrain("station", station_train, 0, station_num);
printTrain("pass", pass_train, 0, pass_num);
} else if (act == GO_PASS_STATION) {
pass_train[pass_num++] = unsched_train[unsched_num++];
printTrainNum(act, unsched_num, station_num, pass_num);
printTrain("unsched", unsched_train, unsched_num, train_len);
printTrain("station", station_train, 0, station_num);
printTrain("pass", pass_train, 0, pass_num);
}
if (unsched_num < train_len) {
if (station_num > 0) {
int old_unsched_train[MAX_TRAIN_LEN], old_station_train[MAX_TRAIN_LEN], old_pass_train[MAX_TRAIN_LEN];
int old_unsched_num, old_station_num, old_pass_num;
memcpy(old_unsched_train, unsched_train, sizeof(int) * train_len);
memcpy(old_station_train, station_train, sizeof(int) * train_len);
memcpy(old_pass_train, pass_train, sizeof(int) * train_len);
old_unsched_num = unsched_num;
old_station_num = station_num;
old_pass_num = pass_num;
schele(unsched_train, unsched_num, station_train, station_num, pass_train, pass_num, GO_OUT_STATION);
printRestoreDump();
unsched_num = old_unsched_num;
station_num = old_station_num;
pass_num = old_pass_num;
memcpy(unsched_train, old_unsched_train, sizeof(int) * train_len);
memcpy(station_train, old_station_train, sizeof(int) * train_len);
memcpy(pass_train, old_pass_train, sizeof(int) * train_len);
printTrain("unsched", unsched_train, unsched_num, train_len);
printTrain("station", station_train, 0, station_num);
printTrain("pass", pass_train, 0, pass_num);
schele(unsched_train, unsched_num, station_train, station_num, pass_train, pass_num, GO_IN_STATION);
printRestoreDump();
unsched_num = old_unsched_num;
station_num = old_station_num;
pass_num = old_pass_num;
memcpy(unsched_train, old_unsched_train, sizeof(int) * train_len);
memcpy(station_train, old_station_train, sizeof(int) * train_len);
memcpy(pass_train, old_pass_train, sizeof(int) * train_len);
printTrain("unsched", unsched_train, unsched_num, train_len);
printTrain("station", station_train, 0, station_num);
printTrain("pass", pass_train, 0, pass_num);
schele(unsched_train, unsched_num, station_train, station_num, pass_train, pass_num, GO_PASS_STATION);
} else {
int old_unsched_train[MAX_TRAIN_LEN], old_station_train[MAX_TRAIN_LEN], old_pass_train[MAX_TRAIN_LEN];
int old_unsched_num, old_station_num, old_pass_num;
old_unsched_num = unsched_num;
old_station_num = station_num;
old_pass_num = pass_num;
memcpy(old_unsched_train, unsched_train, sizeof(int) * train_len);
memcpy(old_station_train, station_train, sizeof(int) * train_len);
memcpy(old_pass_train, pass_train, sizeof(int) * train_len);
schele(unsched_train, unsched_num, station_train, station_num, pass_train, pass_num, GO_IN_STATION);
printRestoreDump();
unsched_num = old_unsched_num;
station_num = old_station_num;
pass_num = old_pass_num;
memcpy(unsched_train, old_unsched_train, sizeof(int) * train_len);
memcpy(station_train, old_station_train, sizeof(int) * train_len);
memcpy(pass_train, old_pass_train, sizeof(int) * train_len);
printTrain("unsched", unsched_train, unsched_num, train_len);
printTrain("station", station_train, 0, station_num);
printTrain("pass", pass_train, 0, pass_num);
schele(unsched_train, unsched_num, station_train, station_num, pass_train, pass_num, GO_PASS_STATION);
}
} else if (station_num > 0) {
schele(unsched_train, unsched_num, station_train, station_num, pass_train, pass_num, GO_OUT_STATION);
} else {
/* get a schele */
if (pass_num != train_len) {
printf("Error: pass_num is not equal to train_len.\n");
exit(1);
}
schele_num++;
printSchele(pass_train, pass_num);
}
}
void main()
{
int unsched_train[MAX_TRAIN_LEN];
int station_train[MAX_TRAIN_LEN];
int pass_train[MAX_TRAIN_LEN];
int i;
printf("Please input train length: ");
scanf("%d", &train_len);
printf("==================================================\n");
if (train_len > MAX_TRAIN_LEN) {
printf("train length is too large, maximal length is %d.\n", MAX_TRAIN_LEN);
exit(1);
}
for (i = 0; i < train_len; i++)
unsched_train[i] = i + 1;
schele_num = 0;
schele(unsched_train, 0, station_train, 0, pass_train, 0, GO_IN_STATION);
printf("==================================================\n");
printf("Total schele number is: %d\n", schele_num);
}
⑸ 通常棧底所指是什麼內容,棧頂所指又是什麼 (關於51單片機編程)
棧是一種數據結構。先進後出。即LIFO原則。常用於中斷斷點現場的數據保存與恢復。
棧底指的是堆棧指針sp所指的起始位置begin,當有數據進站後,sp+1;當sp指向的地址為
begin+length;即棧滿,此時的sp指向的即為棧頂。
通俗講,棧底就是第一個進棧的數據,棧頂就是最後一個進棧的數據。。。。
想要深入理解的話,可以去學一學數據結構,對高級編程有很大幫助的!
希望對你有幫助
⑹ 數據結構 有關棧 火車調度的編程 用C語言 要快!!!
本來想寫寫的,不過看你好像是在應付作業,還是算了吧,我不做害人的事。一不小心就灌水了,對不起,o(∩_∩)o...
你上大學了吧,不容易啊,何必這么墮落,多學點東西才對的起自己,對的起父母,對的起將來。
⑺ 為什麼我在三菱PLC編程軟體輸入MPS,MPP,MPD上面顯示「改指令不能用梯形圖模式輸入」哪位大蝦能告訴我啊
t型圖里進站讀站出站都是直接用畫的形式畫出來就行了沒必要用寫的啊,t型輸入就是考慮到有些人會畫不會變成指令表,你要不會畫的話直接跳到軟體的指令表輸入就行了
⑻ 公交車自動報站是怎麼實現的
GPS自動報站