实现每5个单位翻转一次进行样例测试
- `timescale 1ns / 1ps
-
- module clock_tb(
-
- );
- reg clk;
- wire clk_o;
- hz1 u(clk,clk_o);
-
- initial clk = 1;
- always #(5) clk = ~clk;
-
- endmodule
- `timescale 1ns / 1ps
-
- module final_tb( );
- reg clk;//开关,开时复位
- reg reset;
- wire[6:0]show;//表示怎么亮
- wire[3:0]dn0;//表示4个数码管哪个亮
- wire[7:0] hour;//表示下面LED的情况
-
- total u(clk,reset,show,dn0,hour);
- initial clk = 1;
- always #(5) clk = ~clk;
-
- initial begin
- reset =0;
- #9;
- reset = 1;
-
-
- end
- endmodule
- #include<iostream>
- #include<stack>
- #include<vector>
- #include<map>
- #include<queue>
- using namespace std;
- vector<vector<int>>arr;
- int a[100];
- int main() {
- int n, t;
- cin >> n;
- for (int i = 1; i <= n; i++) {
- cin >> t;
- if (arr.empty()) {
- vector<int>w;
- w.push_back(t);
- arr.push_back(w);
- }
- else {
- int j = 0;
- for (; j < arr.size(); j++) {
- if (t < arr[j].back()) {
- arr[j].push_back(t);
- break;
- }
- }
- if (j == arr.size()) {
- vector<int>w;
- w.push_back(t);
- arr.push_back(w);
- }
- }
- }
- for (int i = 0; i < arr.size(); i++) {
- if (arr[i].back() == 1) {
- for (int j = 0; j < arr[i].size(); j++) {
- cout << arr[i][j] << " ";
- }
- cout << endl;
- cout << arr[i].size();
- return 0;
- }
- }
- return 0;
- }
原
- #include<iostream>
- #include<stack>
- using namespace std;
- //遇到一个数时,如果比已知的都大,那就新开一个
- //如果比已知的小,就应该接在最接近的下面
- // 类似于蜘蛛纸牌
- //
- //
- //最后是要输出1号所在的队列中元素,1号就是最后的。
- //应该有前驱指针
- //最坏情况是正序,即123……
- //
- // 用结构体数组,每个元素记录它前一个元素
- //
- int arr[100];//记录当前各自队列的末尾元素
- int p = 1;//p表示当前需要的轨道数
- int n, t;
- struct node {
- int value;
- int pre;
- }ar[100];
- //这个就代表列车,不应该把列车
- int maxa() {//返回当前各队列的末尾元素的最大值
- int ma = arr[1];
- for (int i = 1; i <= p; i++) {
- if (arr[i] >= ma) {
- ma = arr[i];
- }
- }
- return ma;
- }
- int app(int num) {//找到当前队列中末尾最接近Num的队列,并返回其队列下标
- int mi = 100, w = 1;//mi表示当前最小的插值,w表示其所位于的队列编号
- for (int i = 1; i <= p; i++) {
- if (arr[i] > num && arr[i] - num <= mi) {
- w = i;
- mi = arr[i] - num;
- }
- }
- return w;
- }
- bool ok = false;
- int main() {
- cin >> n;
- for (int i = 1; i <= n; i++) {
- cin >> t;
- if (p == 1 && !ok) {
- arr[p] = t;
- ok = true;
- }
- else if (t > maxa()) {
- p++;
- arr[p] = t;
- }
- else {
- ar[t].pre = arr[app(t)];
- arr[app(t)] = t;
- }
- }
- int i = 1;
- int co[100];
- int cnt = 1;
- co[cnt++] = 1;
- while (ar[i].pre != 0) {
- co[cnt++] = ar[i].pre;
- i = ar[i].pre;
- }
- for (int j = cnt - 1; j >= 1; j--) {
- if (j != 1) { cout << co[j] << " "; }
- else { cout << co[j] << endl; }
- }
- cout << p;
- cout << endl;
- return 0;
- }